일반 함수와 Arrow 함수의 차이
1. 문법 구조
일반 함수
function regularFunction(x) {
return x * 2
}
화살표 함수
const arrowFunction = (x) => x * 2
2. this 바인딩
화살표 함수는 자신만의 this를 생성하지 않고, 주변 범위의 this를 사용
// 일반 함수
function regularFunction() {
console.log(this) // 함수 호출 시의 this
}
// 화살표 함수
const arrowFunction = () => {
console.log(this) // 주변 범위의 this
}
const obj = { method: regularFunction, arrowMethod: arrowFunction }
obj.method() // obj
obj.arrowMethod() // 주변 범위(this를 가진 함수나 객체)에 따라 달라짐
3. arguments 객체
일반 함수는 arguments 객체를 사용하여 인자에 접근할 수 있지만, 화살표 함수는 arguments 객체를 사용할 수 없다.
function regularFunction() {
console.log(arguments[0])
}
const arrowFunction = () => {
console.log(arguments[0]) // ReferenceError: arguments is not defined
}
regularFunction(5) // 5
arrowFunction(5) // Error 4. 생성자 함수로 사용할 수 없음:
4. 생성자 함수
화살표 함수는 생성자 함수로 사용할 수 없다.
function RegularConstructor() {
this.prop = 'regular'
}
const ArrowConstructor = () => {
this.prop = 'arrow'
}
const regObj = new RegularConstructor() // 정상 동작
const arrObj = new ArrowConstructor() // TypeError: ArrowConstructor is not a constructor 5. 메소드로 사용할 때의 this: