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
添加回答
舉報