반응형
평가 시점이 순수함수가 아닌 함수가 중요하다.
순수함수는 언제 실행해도 상관없어서(동일한 결과를 리턴) 평가 시점이 상관이 없음
평가시점을 다루는것을 통해 다양한 로직을 다룬다.
일급함수
함수를 값으로 다룰 수 있다.
함수를 변수에 담을수도있고, 값으로 다룰수도있고, .. 인자로 넘길수도있다.
- 변수를 함수에 담을 수 있다.
var f1 = function(a) {return a * a}; console.log(f1) // 함수로 나옴
- 함수가 함수를 인자로 담을 수 있다.언제 평가해도 상관없는 순수함수를 만드는것이 함수형 프로그래밍
return f3(f){ return f(); // 10 /어떤 함수를 인자로 넘기느냐에 따라 다름 } f3(function() { return 10;})
function add_maker(g){
return function(b){ // 클로저
return a+b;
}
}
var add10 = add_maker(10);
// >>> var add10 = return function(b){
// return 10 + b;
// } // 요런 느낌임
console.log(add10(20));
예시
일급함수 + 클로저
function add_maker(a){
return function(b){ // 클로저
return a+b;
}
}
이렇게 a를 참조한다.
function(b){ // 클로저
return a+b;
}
얘가
function add_maker(a){
}
여기서 받은 a를 참조하여 기억하고 있음
순수함수이기도하다.
function(b){ // 클로저
return a+b;
}
a는 변수이지만 참조만 할 뿐 변경을하고있지않는다.
어떤 시점에 평가를해도 동일한 값을 가지고 있음
함수 예제
funcation f4(f1,f2,f3){
return f3(f1() + f2());
// 2 1
// 3*3
}
f4(
function() {return 2;},
function() {return 1;},
function(a) { return a * a}
)
고차함수
함수를 인자를 받아서 실행
함수를 만들어서 리턴하는 함수
2가지 유형의 고차함수가 있다.
*함수를 인자를 받아서 실행 *
const apply1 = f => f(1); //함수 인자값으로 받아서 실행
const add2 = a => a + 2;
log(apply1(add2));// 3 >>>> a => a + 2;함수를 받아서 안에서 실행 시켜줌
log(apply1(a => a - 1));
const times = (f, n) => {
let i = -1;
while (++i < n) f(i);
};
times(log, 3);
times(a => log(a + 10), 3);
함수를 만들어서 리턴하는 함수
클로저를 만들어 리턴
const addMaker = a => b => a + b; // a를 계속해서 기억하고 있다.
const add10 = addMaker(10);
log(add10(5));
log(add10(10));
반응형
'프로그래밍 언어 > JavaScript' 카테고리의 다른 글
promise (0) | 2022.03.06 |
---|---|
this (0) | 2021.08.02 |
vanlia javascript 에서 router 구현 (0) | 2021.07.17 |
webpack (0) | 2021.07.16 |
map, filter, reduce (0) | 2021.07.05 |