JavaScript - 일급 함수 & 고차 함수

Code_Alpacat·2022년 6월 9일
0

JavaScript - 중급

목록 보기
1/11

1. 일급

  • 값으로 다룰 수 있다.
  • 변수에 담을 수 있다.
  • 함수의 인자로 사용될 수 있다.
  • 함수의 결과로 사용될 수 있다.
const a = 10; //값으로 다룰 수 있다.
const add10 = a => a + 10; // 변수에 담을 수 있다.
const r = add10(a) //인자로 사용할 수 있다.
console.log(r) //함수의 결과로 사용 가능하다.

2. 일급 함수

  • 함수를 값으로 다룰 수 있다.
  • 조합성과 추상화의 도구
const add5 = a => a + 5;
console.log(add5) //함수 자체를 변수에 담아 사용
console.log(add(5)) //값을 변수에 담을 수 있음.

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

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

3. 고차 함수

  • 함수를 값으로 다루는 함수
const apply1 = f => f(1); //인자 1을 함수에 넣어주는 함수
const add2 = a => a + 2;
console.log(apply1(add2)); //add2의 인자로 1을 받았으므로 값 = 3
console.log(apply1(a => a - 1)) // a = 1 이므로 0 출력

const times = (f, n) => {
    let i = -1;
    while (++i < n) f(i);
};


times(console.log, 3);
times(a => console.log(a+10), 3); //함수를 인자로 받아 함수를 내부에서 실행 가능
  • 함수를 만들어 리턴하는 함수 (클로저를 만들어 리턴하는 함수)
const addMaker = a => b => a + b;
const add10 = addMaker(10); //10을 더하는 함수 생성 b => 10 + b
console.log(add10(5));
console.log(add10(10));
  • 클로저란?
    • 함수가 인자를 기억하는 계속해서 기억함
    • b => a + b 는 함수이자 a를 기억하는 클로저
profile
In the future, I'm never gonna regret, cuz I've been trying my best for every single moment.

0개의 댓글