JavaScript-함수형 언어 (1)

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);

카테고리:

업데이트:

댓글남기기