Arrow function
기본 함수 작성법은 이렇게 작성한다.
(1)
function 함수(){
//어쩌구
}
(2)
var 함수 = function(){
//어쩌구
}
하지만, ES6 신문법으로 이렇게 사용할 수도 있다.
var 함수 = () => {
//어쩌구
}
Arrow function으로 쓰면 좋은 장점
1. 함수 본연의 기능을 아주 잘 표현하는 문법이다.
특히, 함수 본연의 입출력기능을 아주 직관적으로 잘 표현해준다.
(함수를 사용하는 이유는
1. 여러가지 기능을 하는 코드를 한 단어로 묶고 싶을 때 (그리고 나중에 재사용할 때)
2. 입출력기능을 만들 때 이다.)
var 두배만들기 = (x) => { return x * 2 }
console.log( 두배만들기(4) );
console.log( 두배만들기(8) );
var 두배만들기 = x => { return x * 2 }
console.log( 두배만들기(4) );
console.log( 두배만들기(8) );
var 두배만들기 = x => x * 2 ;
console.log( 두배만들기(4) );
console.log( 두배만들기(8) );
var 오브젝트1 = {
함수 : function(){ console.log(this) }
}
오브젝트1.함수()
함수()를 가지고 있는 오브젝트인 오브젝트1이 콘솔창에 출력될 것이다.
var 오브젝트1 = {
함수 : () => { console.log(this) }
}
오브젝트1.함수()
이건 window라는게 출력될 것이다.
왜 함수의 주인인 오브젝트1이 출력되지 않냐면,
this값은 함수를 만나면 항상 변하는데 arrow function 안에서는 변하지 않고 밖에 있던 this를 그대로 쓰기 때문이다. (오브젝트 밖에 있던 this는 window)
arrow function은 외부에 있던 this를 그대로 내부로 가져와서 사용하는 함수기 때문에
내가 예측하던 this값과 달라질 수도 있는 단점이 될 수 있다.
하지만 this의 뜻이 달라지는 것 처럼 일반 function과 용도가 완전 같지 않기 때문에
일반 function을 항상 대체할 수 있는 문법이 아니다. 주의하기!