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를 붙혀서 생성할 수 없다.

 

 

 

 

 

이 부분은 좀 더 사용하면서 익혀봐야할 것 같다.

여러 글을 읽으면서 느낀 것은 내가 화살표 함수를 모르는 것보다, 기존 함수를 잘 몰랐다는 생각이 많이 들었다.

반응형

+ Recent posts