[JavaScript] ES6 - Arrow Function
13847 ワード
Arrow Function(矢印関数)
ES 6に導入された関数記号は、functionキーワードの代わりに矢印形状の文字=>で表すことができる.既存の関数の動作とは少し異なります
構文
// 일반 함수
// 함수 선언식
function sayHello (name) {
return `hello ${name}`
}
// 함수 표현식
const sayHello = function (name) { return `hello ${name}` }
// 화살표 함수
const arrowFunc = (x, y) => { ... }
パラメータ// 매개변수가 한 개인 경우 소괄호 생략 가능
const sayHello = name => `hello ${name}`;
// 매개변수가 없는 경우 소괄호 생략 불가능
const arrowFunc = () => { ... }
関数体は複数の文からなり、括弧は省略できません.const sum = (a, b) => {
const result = a + b;
return result;
}
// 하나의 문이라면 return 생략 가능
const sum = (a, b) => a + b;
=
const sum = (a, b) => {
return a + b;
};
オブジェクトが戻るときはカッコを使用します.const getUser = (name, age) => ({
name, // name: name
age // age: age
});
=
const getUser = (name, age) => {
return {
name,
age
}
};
default parameterconst sayHello = (name='성이름') => console.log(`hello ${name}`);
sayHello(); // hello 성이름
矢印関数と一般関数の違い
1. this
このバインディングは、関数の呼び出し方法(呼び出し方法)に基づいて動的に決定されます.bind、callなどの方法で明示的にバインドできます.var a = 1;
var obj = { a: 2 };
function foo() {
console.log(this);
return this.a;
}
foo(); // global/window - 1
foo.call(obj); // {a: 2} - 2
このバインドがなければ、矢印関数は内部のthisを変更できません.いつも上尉スコフのこの点を参照しています.const person = {
name: '성이름',
sayHi: function() {console.log(`hi ${this.name}`)},
sayHello: () => console.log(`hello ${this.name}`)
}
person.sayHi(); // hi 성이름
// 상위 스코프 전역 객체를 가리키므로 빈 문자열 window.name과 같음
person.sayHello(); // hello
2.矢印関数ではインスタンスを作成できません。
function Person1() {}
new Person1(); // Person {}
const Person2 = () => {}
new Person2(); // Uncaught TypeError: arrow is not a constructor
Reference
この問題について([JavaScript] ES6 - Arrow Function), 我々は、より多くの情報をここで見つけました
https://velog.io/@vanillovin/JavaScript-ES6-Arrow-Function
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
// 일반 함수
// 함수 선언식
function sayHello (name) {
return `hello ${name}`
}
// 함수 표현식
const sayHello = function (name) { return `hello ${name}` }
// 화살표 함수
const arrowFunc = (x, y) => { ... }
// 매개변수가 한 개인 경우 소괄호 생략 가능
const sayHello = name => `hello ${name}`;
// 매개변수가 없는 경우 소괄호 생략 불가능
const arrowFunc = () => { ... }
const sum = (a, b) => {
const result = a + b;
return result;
}
// 하나의 문이라면 return 생략 가능
const sum = (a, b) => a + b;
=
const sum = (a, b) => {
return a + b;
};
const getUser = (name, age) => ({
name, // name: name
age // age: age
});
=
const getUser = (name, age) => {
return {
name,
age
}
};
const sayHello = (name='성이름') => console.log(`hello ${name}`);
sayHello(); // hello 성이름
var a = 1;
var obj = { a: 2 };
function foo() {
console.log(this);
return this.a;
}
foo(); // global/window - 1
foo.call(obj); // {a: 2} - 2
const person = {
name: '성이름',
sayHi: function() {console.log(`hi ${this.name}`)},
sayHello: () => console.log(`hello ${this.name}`)
}
person.sayHi(); // hi 성이름
// 상위 스코프 전역 객체를 가리키므로 빈 문자열 window.name과 같음
person.sayHello(); // hello
function Person1() {}
new Person1(); // Person {}
const Person2 = () => {}
new Person2(); // Uncaught TypeError: arrow is not a constructor
Reference
この問題について([JavaScript] ES6 - Arrow Function), 我々は、より多くの情報をここで見つけました https://velog.io/@vanillovin/JavaScript-ES6-Arrow-Functionテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol