자바스크립트의 화살표 함수는 ES6에서 도입되었으며, function
키워드 대신 =>
(arrow notation 또는 fat arrow라 함)를 사용한다.
다음 예시에서 보듯, 화살표 함수 생성은 아규먼트[파라미터] 다음에 =>
를 사용하고 함수의 바디를 적는다. 함수가 하나의 아규먼트를 취할 경우 괄호를 생략할 수 있으며, 함수 바디가 하나의 구문만을 포함하는 경우 중괄호와 return
구문을 생략할 수 있다.
또한 화살표 함수는 언제나 익명이며, 따라서 이를 변수에 할당할 수는 있으나, function 키워드처럼 이름을 만들 수는 없다. 다음은 <Learning JavaScript>에서 가져온 화살표 함수 예시다.
const f1 = function() {
return "hello!";
} // 또는
const f1 = () => "hello!";
const f2 = function(name) {
return 'Hello, ${name}!';
} // 또는
const f2 = name => 'Hello, ${name}!';
const f3 = function(a, b) {
return a + b;
} // 또는
const f3 = (a, b) => a + b;
또 다른 예를 살펴보자. 화살표 함수를 map
메소드에 활용하는 경우다.
let myNumbers = [10, 50, 200];
let doubleNumbers = myNumbers.map(function(x){
return x * 2
}) // 또는
let anotherDoubleNumbers = myNumbers.map(x => x * 2);
마지막으로 화살표 함수에서의 this
를 살펴보자. 자바스크립트의 일반 함수와 메소드에서는 함수를 선언할 때가 아닌 함수를 호출하는 방식에 따라 this
가 바인딩 되는 객체가 동적으로 결정되지만, 화살표 함수에서는 언제나 상위 스코프의 this
를 정적으로 가리키게 된다. 따라서 화살표 함수는 메소드를 정의하는 데 사용하지 않는 게 좋으며, 또한 call, apply, bind
메소드를 사용하여 this
를 변경할 수도 없다.
'개발 > JavaScript' 카테고리의 다른 글
자바스크립트 배열 속성 및 메소드 정리 (0) | 2020.06.10 |
---|---|
자바스크립트 표현식과 연산자 개념 (0) | 2020.06.08 |
[JavaScript] ⑤ 자바스크립트 함수란? (0) | 2020.06.07 |