2 回答
TA贡献1789条经验 获得超10个赞
我不知道......如果JS可以从一个函数创建一个函数。
要回答这部分问题,是的Javascript可以从函数创建一个函数。任何函数都可以返回另一个函数,执行此操作的典型方法是创建工厂函数,或使用函数currying来创建新函数:
厂
返回另一个函数的函数。由于Javascript闭包,您可以设置返回的函数可以看到的“私有”变量,但调用函数无法访问:
function addTwoFactory() {
let a = 2;
return function(b) {
return a + b;
}
}
let f1 = addTwoFactory();
let f2 = addTwoFactory();
console.log(f1(3)); // 5
console.log(f2(3)); // 5
还可以创建可以创建不同种类方法的可配置工厂:
function makeAdder(a) {
return function(b) {
return a + b;
}
}
let addTwo = adderFactory(2);
let addThree = adderFactory(3);
console.log(addTwo(3)); // 5
console.log(addThree(3)); // 6
哗众取宠
函数currying是一个基本函数的想法,它带有几个参数,并且“烘入”其中一个参数,以便更容易重用:
function adder(a, b) {
return a + b;
}
function makeAdder(a) {
return function(b) {
return adder(a, b);
}
}
let addTwo = makeAdder(2);
console.log(addTwo(3)); // 5
添加回答
举报