클로저 프로그래밍의 즐거움
에서)// 순수함수
function add(a, b) {
return a+b;
}
console.log(add(5,10))
let c = 10;
// 순수함수 x
function add2(a,b) {
return a+b+c;
}
console.log(add(5,10))
c = 4;
console.log(add(5,10))
// 순수함수 x
let d = 20;
function add3(a,b) {
d = b;
return a+b;
}
console.log(add(5,10))
console.log('d:', d)
// 순수 함수를 사용한 함수형 프로그래밍에서 객체의 값 변형
let obj1 = {val: 10};
function add5(obj1,b){
return {val: obj1.val + b}
}
console.log(obj1.val);
var obj2 = add5(obj1, 20);
console.log(obj1.val);
console.log(obj2.val)
// 함수를
const f1 = function(a) {return a*a};
console.log(f1);
const f2 = add;
console.log(f2);
function add_maker(a) {
return function(b) {
return a+b;
}
}
const add10 = add_maker(10);
console.log(add10(20));
const add5 = add_maker(5);
const add15 = add_maker(15);
console.log(add5(10));
console.log(add15(10));
function f4(f1,f2,f3) {
retunr f3(f1()+f2());
}
f4(
function() {return 2;},
function() {return 1;},
function(a) { return a*a;})
);
// 데이터(객체) 기준
// 객체가 먼저 나오냐
duck.moveLeft();
duck.moveRight();
dog.moveLeft();
dog.MoveRight();
// 함수 기준
// 함수가 먼저 나오냐
moveLeft(dog);
moveRight(duck);
moveLeft({x: 5, y:2});
moveRight(dog);
추가 공부할 것들