화살표함수
커피스크립트에서 ->
를 적당히 잘가져온것 같은데, 간혹 편리하고 간혹 문서읽을때 이게 뭐지 싶을때도 있다. 익숙해지자.
기본구문
(param1, param2, …, paramN) => { statements }
(param1, param2, …, paramN) => expression
// 다음과 동일함: => { return expression; }
// 매개변수가 하나뿐인 경우 괄호는 선택사항:
(singleParam) => { statements }
singleParam => { statements }
// 매개변수가 없는 함수는 괄호가 필요:
() => { statements }
// 객체 리터럴 식을 반환하는 본문(body)을 괄호 속에 넣음:
var f = params => ({foo: bar})
// 아래와 아마도 동일함:
var f = function(params){
return({ foo: bar });
};
// 나머지 매개변수 및 기본 매개변수가 지원됨
(param1, param2, ...rest) => { statements }
(param1 = defaultValue1, param2, …, paramN = defaultValueN) => { statements }
이런것도 됨...거의 혁명
// 매개변수 목록 내 비구조화도 지원됨
var f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c;
f(); // 6
var a = [
"Hydrogen",
"Helium",
"Lithium",
"Beryllium"
];
var a2 = a.map(function(s){ return s.length });
var a3 = a.map( s => s.length );
console.log(a2 == a3 ? a3 : a2);
[8, 6, 7, 10]
//es5
function foo() {
var _arguments = arguments;
var f = function f(i) {
return _arguments[0] + i;
}; // foo 함수의 암시된 arguments 바인딩
return f(2);
}
//es6
function foo() {
let _arguments = arguments;
let f = (i) => arguments[0]+i; // foo 함수의 암시된 arguments 바인딩
return f(2);
}
foo(1); // 3