GOAL
- 화살표 함수(Arrow Function)
- this
- 구조분해할당
- arguments 프로퍼티
Linting의 의미와 필요성
eslint 사용법
1. 비교예제
1) const func1 = function() { const num = 10; };
const func1 = () => { const num = 10; }; // function 키워드 생략
or const func1 = () => const num = 10; // 본문이 하나의 실행무일 경우, 중괄호 생략하고 한 줄에 표기 가능, 이 경우, 해당 실행문의 결과가 "함수의 반환값"으로 지정
2) const func2 = function(num) { for(let i = 0; i < 10; i++) { num++; } return num; };
const func2 = num => { for(let i = 0; i < 10; i++) { num++; } return num; }; // 매개변수가 하나일 경우, 소괄호 생략
3) const func3 = function (num) { return `입력된 숫자는 ${num}입니다.`; };
const func3 = num => `입력된 숫자는 ${num}입니다.`; // 중괄호, return 생략
2. 매개변수 지정 방법
() => { ... } // 매개변수가 없을 경우
x => { ... } // 매개변수가 한 개인 경우, 소괄호를 생략할 수 있다.
(x, y) => { ... } // 매개변수가 여러 개인 경우, 소괄호를 생략할 수 없다.
3. 함수 몸체 지정 방법
x => { return x * x } // single line block
x => x * x // 바디가 한줄이면 중괄호 생략, 암묵적으로 return 됨 / 위 표현과 동일하다.
() => { // multi line block.
const x = 10;
return x * x;
};
4. 함수 호출
// ES5 //
var pow = function (x) { return x * x; };
console.log(pow(10)); // 100
// ES6 //
var pow = x => x * x;
console.log(pow(10)); // 100
5. 클로저 표현
// 함수 표현식 예
let adder = function(x) {
console.log(`x:${x}`) // x:5
return function(y) {
console.log(`y:${y}`) // y:7
return x + y
}
}
adder(5)(7) // 12
// 화살표 함수 예
let adder = (x) => {
return (y) => {
return x + y
}
}
------------------------------------------
let adder = x => {
return y => x + y
}
------------------------------------------
let adder = x => y => x + y
------------------------------------------
=> 다음과 같이 표현할 수 있다!
// ex.
function sum() {
if (!arguments.length) return 0;
var array = Array.prototype.slice.call(arguments); // arguments 객체를 배열로 변환
return array.reduce(function (pre, cur) {
return pre + cur;
});
}
----------------------------------------------------
// ES6
function sum(...args) {
if (!args.length) return 0;
return args.reduce((pre, cur) => pre + cur);
}
console.log(sum(1, 2, 3, 4, 5)); // 15