JavaScript-함수형 언어 (1)
평가
- 코드가 계산되어 값을 만드는 것
일급
- 값으로 다룰 수 있다.
- 변수에 담을 수 있다.
- 함수의 인자로 사용될 수 있다.
- 함수의 결과로 사용될 수 있다.
일급 함수
- 함수를 값으로 다룰 수 있다.
- 조합성과 추상화의 도구
const a = 10;
const add10 = (a) => { return a+10 };
console.log(add10);
console.log(add10(a));
const a = 10;
const add10 = (a) => { return a+10 };
console.log(add10);
console.log(add10(a));
고차함수
- 함수를 값으로 다루는 함수
- 두 가지의 종류가 존재한다.
- 함수를 인자로 받아서 실행하는 함수
- 함수를 만들어 리턴하는 함수 (클로저를 만들어 리턴하는 함수)
// 함수를 인자로 받아서 실행하는 함수
const apply1 = f => f(1);
const add2 = a => a + 2;
console.log(apply1(add2)); // 3
console.log(apply1(add2(5))); // Uncaught TypeError : apply1의 인자가 숫자여서 에러
console.log(apply1(a => a + 9)); // 10
const times = (f, n) => {
for (let i = 0; i < n; i++) f(i);
};
times(a => console.log(a + 10), 3); // 10
// 11
// 12
// 함수를 만들어 리턴하는 함수 (클로저를 만들어 리턴하는 함수)
const addMaker = a => b => a + b;
const add10 = addMaker(10); // 여기서 add10은 함수이자 a=10을 기억하고 있는 클로저
console.log(add10(5));
console.log(add10(10));
리스트 순회
- 기존 ES5에서의 리스트 순회
const list = [1, 2, 3];
const str = 'abc';
for (let i = 0; i < list.length; i++) {
console.log(list[i]);
}
for (let i = 0; i < str.length; i++) {
console.log(str[i]);
}
- ES6에서 선언적으로 바뀐 리스트 순회
const list = [1, 2, 3];
const str = 'abc';
for (const a of list) console.log(a);
for (const a of str) console.log(a);
댓글남기기