我有一个函数 freq01()
,单击按钮时我想要一个 function(new)
来创建函数 freq01()
,带有新参数。我不知道从哪里开始,也不知道 JS 是否可以从函数创建函数。
所有变量都已创建。请指出正确的方向...!
下面的代码是将选中的单选按钮值保存到一个数组中。
function freq01(){
if (document.getElementById("w01").checked){
incFreq = document.getElementById("w01").value;
}
else if (document.getElementById("f01").checked){
incFreq = document.getElementById("f01").value;
}
else if (document.getElementById("m01").checked){
incFreq = document.getElementById("m01").value;
}
}
最佳答案
I have no idea ... if JS can create a function from a function.
要回答这部分问题,是的,Javascript 可以从函数创建函数。任何函数都可以返回另一个函数,实现此目的的典型方法是创建一个工厂 函数,或使用函数柯里化(Currying) 来创建新函数:
工厂
返回另一个函数的函数。由于 Javascript 闭包,您可以设置返回函数可以看到但调用函数无法访问的“私有(private)”变量:
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)
函数柯里化(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
关于javascript - 使用新参数创建已创建函数的副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56165778/