JavaScript에서 화살표 함수 (Arrow Functions)는 ES6부터 소개된 새로운 함수 선언 방식입니다. 화살표 함수는 보다 간결하고 간편한 문법을 제공하여 함수를 선언할 때 유용하게 사용됩니다.
기본 문법
화살표 함수는 다음과 같은 기본 문법을 갖고 있습니다.
const functionName = (parameter1, parameter2) => {
// 함수 내용
};
위의 예제에서 functionName
은 함수의 이름이며, (parameter1, parameter2)
는 함수의 인자들입니다. 함수의 내용은 중괄호 {}
안에 작성되며, 함수가 한 줄인 경우 중괄호를 생략할 수 있습니다.
간결한 문법
화살표 함수는 다른 함수 선언 방식에 비해 매우 간결한 특징을 가지고 있습니다. 예를 들어, 다음과 같은 함수를 화살표 함수로 변경할 수 있습니다.
function multiply(a, b) {
return a * b;
}
위의 함수를 화살표 함수로 변경하면 다음과 같이 표현할 수 있습니다.
const multiply = (a, b) => a * b;
화살표 함수는 단일문일 경우에는 중괄호와 return
문을 생략할 수 있습니다. 또한, 인자가 하나인 경우에는 괄호 ()
를 생략할 수 있습니다.
this 바인딩
일반적인 함수 선언 방식에서는 함수의 스코프 내에서 this
가 동적으로 바인딩되지만, 화살표 함수는 자신만의 this
를 갖지 않고 주변 범위의 this
를 그대로 사용합니다. 이를 lexical this라고 합니다.
const obj = {
name: 'John',
sayName: function() {
setTimeout(function() {
console.log(this.name);
}, 1000);
}
};
obj.sayName(); // `undefined` 출력
위의 예제에서 sayName
메서드 내에서 setTimeout
함수에서의 this
는 window
객체를 가리키기 때문에 undefined
가 출력됩니다. 화살표 함수를 사용하면 이러한 문제를 해결할 수 있습니다.
const obj = {
name: 'John',
sayName: function() {
setTimeout(() => {
console.log(this.name);
}, 1000);
}
};
obj.sayName(); // `John` 출력
화살표 함수를 사용하면 함수 스코프 내의 this
를 그대로 유지하므로 원하는 값을 얻을 수 있습니다.
결론
화살표 함수는 JavaScript에서 보다 간결하고 유용한 함수 선언 방식입니다. 다른 함수 선언 방식에 비해 가독성이 좋고, this
바인딩에 대한 헷갈림을 줄여줍니다. 따라서 코드를 작성하거나 유지보수하는데 있어서 자주 사용되는 기능입니다.