728x90
반응형
JavaScript의 화살표 함수(Arrow Function)는 ES6에서 도입된 간결하고 편리한 함수 정의 방식입니다. 화살표 함수는 기존의 함수 표현식보다 문법이 간단하고, this 바인딩이 정적으로 결정되는 등 여러 장점을 가지고 있습니다. 이번 글에서는 화살표 함수의 사용법과 주의할 점에 대해 알아보겠습니다.
1. 화살표 함수 기본 사용법
화살표 함수는 function 키워드 대신 => 기호를 사용하여 함수를 정의합니다. 다음은 기본적인 화살표 함수의 문법입니다.
// 기본 함수 표현식
const add = function(a, b) {
return a + b;
};
// 화살표 함수 표현식
const add = (a, b) => {
return a + b;
};
// 더 간단한 표현 (중괄호와 return 생략)
const add = (a, b) => a + b;
설명
- 화살표 함수에서는 중괄호({})와 return 키워드를 생략할 수 있습니다. 단, 생략하려면 함수 본문이 단일 표현식이어야 합니다.
- 매개변수가 하나인 경우 괄호(())를 생략할 수 있습니다.
// 매개변수가 하나인 경우 괄호 생략 가능
const square = x => x * x;
2. 매개변수가 없는 화살표 함수
매개변수가 없는 화살표 함수는 빈 괄호(())를 사용하여 정의합니다.
const greet = () => 'Hello, World!';
console.log(greet()); // 'Hello, World!'
3. 객체 반환하기
객체를 반환할 때는 객체 리터럴을 괄호로 감싸야 합니다. 그렇지 않으면 함수 본문의 중괄호로 인식됩니다.
const getUser = () => ({ name: 'John', age: 30 });
console.log(getUser()); // { name: 'John', age: 30 }
4. 화살표 함수의 this 바인딩
화살표 함수는 자신만의 this를 가지지 않고, 주변 lexical context의 this를 상속받습니다. 이를 통해 일반 함수에서 자주 겪는 this 바인딩 문제를 해결할 수 있습니다.
function Person() {
this.age = 0;
setInterval(() => {
this.age++; // this는 Person 객체를 가리킴
console.log(this.age);
}, 1000);
}
const person = new Person();
설명
- setInterval 내의 화살표 함수는 Person 객체의 this를 상속받아, this.age가 올바르게 증가합니다.
5. 주의할 점
1. 메서드로 사용하지 않기: 화살표 함수는 메서드로 사용하기에 적합하지 않습니다. 메서드는 객체의 this 컨텍스트를 사용해야 하는데, 화살표 함수는 this를 상속받기 때문입니다.
const obj = {
value: 10,
// 화살표 함수는 메서드로 사용하지 않는 것이 좋습니다.
increment: () => this.value++
};
obj.increment();
console.log(obj.value); // undefined (this가 상속되지 않음)
2. 생성자로 사용하지 않기
화살표 함수는 생성자로 사용할 수 없습니다. new 키워드와 함께 사용하려고 하면 오류가 발생합니다.
const MyFunction = () => {};
const instance = new MyFunction(); // 오류 발생: MyFunction is not a constructor
3. arguments 객체 사용 불가
화살표 함수는 자체 arguments 객체를 가지지 않습니다. 대신, 필요하다면 나머지 매개변수(Rest Parameter)를 사용할 수 있습니다.
const func = (...args) => {
console.log(args);
};
func(1, 2, 3); // [1, 2, 3]
728x90
반응형
'Programming > JavaScript & TypeScript' 카테고리의 다른 글
JavaScript 스프레드 연산자 사용법 (0) | 2024.07.10 |
---|---|
타입스크립트란? (0) | 2023.04.20 |
웹소켓과 타입스크립트 예제 코드 (0) | 2023.04.19 |
[jQuery] 라디오버튼, 콤보박스에서 자주쓰는 jQuery (0) | 2019.11.22 |