1、函数柯里化
函数柯里化我的理解是一种,一个函数对应多种功能的策略模式的实现。
代码如下
// 无柯里化
function sum(a, b, c) {
return a + b + c;
}
console.log(sum(1,2,3));
//柯里化写法 一个函数可以执行三个不同的功能。
function current(a){
a+=1;
return function(b){
b*=2;
return function(c){
c+=3;
return a+b+c; //结果汇总
}
}
}
// 不同的参数,执行不同的功能
console.log(current(2)(4)(6));//20
当然也有自动柯里化的写法,里面用到了递归思想,在实际使用时,不建议应用。会增加代码算法复杂度。
2、生成器函数。
就是function后面带* 的函数,执行函数时,不会立即触发里面的语句。调用返回值的next()后,执行函数语句,直到遇到yield ,并返回yield的值为止!
function* name(){
console.log(123);
yield 1;
yield 2;
yield 4;
return 9;
}
const res = name();
console.log(res.next());//{value:1,done:false};
console.log(res.next());
console.log(res.next());
console.log(res.next()); //{value:9,done:true};
//若没有返回值,最后done为true时的value是undefined
用途,可以做暂歇性效果,例如直观的表达小球的运动轨迹。或配合redux使用,这个我还没试过!