ES6 문법이 확장되면서 화살표 함수라는 것이 생겼다.
let a = () => { } 이런 식으로 쓰는 함수인데,
단순히 표기가 간편해졌다 뿐만 아니라 여러 가지 차이점들이 생겼다.
1. this
아마 가장 큰 차이가 this의 여부가 아닐까 싶은데, 화살표 함수에서는 this가 바인딩 되지 않는다.
즉 함수 내부에서 this를 생성하지 않으므로, this를 사용할 시 바로 바깥의 함수 또는 클래스의 this를 불러온다.
그래서 함수 안의 함수를 사용할 때, this를 바인딩해주어야하는 경우가 많은데, 화살표 함수는 그 수고를 줄일 수 있다.
하지만 이런 점 때문에, 화살표 함수는 함수나 클래스의 메소드를 만들때는 적절하지 않다.
2. arguments
일반적인 function에서는 argument라는 문법을 사용할 수 있는데
함수의 인자들을 접근할 수 있습니다.
예를 들면
foo(){
console.log(arguments[0])
}
이렇게 함수를 생성하면,
foo(1)로 함수를 사용하면, 1이 로그에 찍힙니다.
하지만 화살표함수는 이 기능을 지원하지않습니다.
하지만 args라는 조금은 다른 문법을 지원합니다.
3. new 사용 불가 ( 생성자로 사용 불가 )
말그대로 클래스나 객체의 생성자로 사용 불가하다
그와 동시에 new를 붙혀서 생성할 수 없다.
이 부분은 좀 더 사용하면서 익혀봐야할 것 같다.
여러 글을 읽으면서 느낀 것은 내가 화살표 함수를 모르는 것보다, 기존 함수를 잘 몰랐다는 생각이 많이 들었다.
'Coding > JavaScript' 카테고리의 다른 글
TypeScript 문제 'Set<any>' 형식이 배열 형식 또는 문자열 형식이 아닙니다. (0) | 2020.08.29 |
---|---|
JavaScript Method Chaining , Function Chaining, 체이닝 패턴 (0) | 2020.06.14 |
JavaScript 구조 분해 ( Destructuring ) (0) | 2020.05.17 |
코딩테스트 준비를 위한 JS 함수 정리(계속 추가) (0) | 2020.04.30 |
ESLINT와 Prettier란? (0) | 2020.04.12 |