본문 바로가기
JavaScript/JS ES6+

[JS ES6] 함수형 자바스크립트 기본기

by gudwnsgur 2022. 3. 28.
728x90

평가와 일급

평가

코드가 계산되어 값을 만드는것
1 + 2 => 3
[1, 2+3] => [1, 5]
[1, 2, [3, 4]] => [1, 2, Array(2)]
[1, 2, ...[3, 4]] => [1, 2, 3, 4]

 

일급 함수

값으로 다룰 수 있다.
변수에 담을 수 있다.
함수의 인자로 사용될 수 있다.
함수의 리턴값으로 사용될 수 있다.

const num = 8;
const add10 = num => num + 10;
console.log(add10); // num => num + 10
console.log(add10(num)); // 18

const f1 = () => () => 1;
console.log(f1()); // () => 1

const f2 = f1();
console.log(f2); // () => 1
console.log(f2()); // 1

함수를 값으로 다룰 수 있다 => 조합성과 추상화의 도구

 

고차 함수

함수를 값으로 다루는 함수

1. 함수를 인자로 받아 실행하는 함수

const apply1 = f => f(1); // 함수(apply1)가 함수(f)를 받아서 안에서 실행 
const add2 = a => a + 2;

console.log(apply1(add2)); // (a => a + 2)(1) => 3 
console.log(apply1(a => a-1)); // 0
const times = (f, n) => {
  let i = -1;
  while(++i < n) f(i);
};

times(console.log, 3); // 0, 1, 2

times(a => console.log(a+10), 3); // 10, 11, 12

2. 함수를 만들어 리턴하는 함수

const addMaker = a => b => a + b;
const add10 = addMaker(10);
console.log(add10); // b => a+ b
consoel.log(add10(5)); // 15
728x90

'JavaScript > JS ES6+' 카테고리의 다른 글

[JS ES6] 순회와 이터러블  (0) 2022.03.28

댓글