Javascript 是否使用新参数创建已生成函数的副本?
我有一个函数FREK01,当点击一个按钮时,我想要一个函数new来创建一个带有新参数的函数FREK01的副本。我不知道从哪里开始,也不知道JS是否可以从函数创建函数 所有变量都已创建。请给我指出正确的方向 下面的代码用于将选中的单选按钮值保存到数组中Javascript 是否使用新参数创建已生成函数的副本?,javascript,function,Javascript,Function,我有一个函数FREK01,当点击一个按钮时,我想要一个函数new来创建一个带有新参数的函数FREK01的副本。我不知道从哪里开始,也不知道JS是否可以从函数创建函数 所有变量都已创建。请给我指出正确的方向 下面的代码用于将选中的单选按钮值保存到数组中 function freq01(){ if (document.getElementById("w01").checked){ incFreq = document.getElementById("w01").value; } e
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;
}
}
你可以试着用bind
另一个想法是只返回新函数
var newf1 = function createNewFunc(i){
return function(){ return i;}
}
newf1(1)();
newf1(1)();
newf1(1)();
较短的版本可以是:
a = (i)=> ()=> { return i; }
或者更容易阅读
const f2=function createNew(i){
return ()=> { return i; }
};
const res = f2(1)();
你可以试着用bind
另一个想法是只返回新函数
var newf1 = function createNewFunc(i){
return function(){ return i;}
}
newf1(1)();
newf1(1)();
newf1(1)();
较短的版本可以是:
a = (i)=> ()=> { return i; }
或者更容易阅读
const f2=function createNew(i){
return ()=> { return i; }
};
const res = f2(1)();
我不知道。。。如果JS可以从函数创建函数
要回答这部分问题,是的,Javascript可以从函数创建函数。任何函数都可以返回另一个函数,执行此操作的典型方法是创建工厂函数,或使用函数curry创建新函数:
工厂
返回另一个函数的函数。由于Javascript闭包,您可以设置返回函数可以看到的私有变量,但调用函数无法访问:
函数addTwoFactory{
设a=2;
返回函数B{
返回a+b;
}
}
设f1=addTwoFactory;
设f2=addTwoFactory;
console.logf13;//5.
console.logf23;//5.
还可以创建可配置的工厂,这些工厂可以创建不同种类的方法:
函数makeAddera{
返回函数B{
返回a+b;
}
}
设addTwo=adderFactory2;
设addThree=adderFactory3;
console.logaddTwo3;//5.
console.logaddThree3;//6.
咖喱
函数currying是一种采用多个参数的基函数,并在其中一个参数中烘焙,以便更轻松地重用:
函数加法器{
返回a+b;
}
函数makeAddera{
返回函数B{
返回addera,b;
}
}
设addTwo=makeAdder2;
console.logaddTwo3;//5.
我不知道。。。如果JS可以从函数创建函数
要回答这部分问题,是的,Javascript可以从函数创建函数。任何函数都可以返回另一个函数,执行此操作的典型方法是创建工厂函数,或使用函数curry创建新函数:
工厂
返回另一个函数的函数。由于Javascript闭包,您可以设置返回函数可以看到的私有变量,但调用函数无法访问:
函数addTwoFactory{
设a=2;
返回函数B{
返回a+b;
}
}
设f1=addTwoFactory;
设f2=addTwoFactory;
console.logf13;//5.
console.logf23;//5.
还可以创建可配置的工厂,这些工厂可以创建不同种类的方法:
函数makeAddera{
返回函数B{
返回a+b;
}
}
设addTwo=adderFactory2;
设addThree=adderFactory3;
console.logaddTwo3;//5.
console.logaddThree3;//6.
咖喱
函数currying是一种采用多个参数的基函数,并在其中一个参数中烘焙,以便更轻松地重用:
函数加法器{
返回a+b;
}
函数makeAddera{
返回函数B{
返回addera,b;
}
}
设addTwo=makeAdder2;
console.logaddTwo3;//5.
您有多个单选按钮。您需要动态调用此函数。这就是你要问的吗?欢迎来到SO。我不建议创建一个新函数,而是在函数中使用参数,稍后再引用它们,而不是硬编码它们。你能解释一下你想让你的第二个功能做什么吗?后退一步,重新思考你的设计可能是最好的方式。请描述一下您想要实现的目标。JS新手需要实时生成函数,这看起来有点不寻常。是的,我想我可能在这里有些不知所措/您有多个单选按钮。您需要动态调用此函数。这就是你要问的吗?欢迎来到SO。我不建议创建一个新函数,而是在函数中使用参数,稍后再引用它们,而不是硬编码它们。你能解释一下你想让你的第二个功能做什么吗?后退一步,重新思考你的设计可能是最好的方式。请描述一下您想要实现的目标。JS新手需要实时生成函数,这看起来有点不寻常。是的,我想我可能在这里有些不知所措/伟大的如果这回答了您的问题,请不要忘记单击此答案投票按钮旁边的绿色复选标记,将其标记为已接受!伟大的如果这回答了您的问题,请不要忘记单击此答案投票按钮旁边的绿色复选标记,将其标记为已接受!