Javascript 是否使用新参数创建已生成函数的副本?

Javascript 是否使用新参数创建已生成函数的副本?,javascript,function,Javascript,Function,我有一个函数FREK01,当点击一个按钮时,我想要一个函数new来创建一个带有新参数的函数FREK01的副本。我不知道从哪里开始,也不知道JS是否可以从函数创建函数 所有变量都已创建。请给我指出正确的方向 下面的代码用于将选中的单选按钮值保存到数组中 function freq01(){ if (document.getElementById("w01").checked){ incFreq = document.getElementById("w01").value; } e

我有一个函数FREK01,当点击一个按钮时,我想要一个函数new来创建一个带有新参数的函数FREK01的副本。我不知道从哪里开始,也不知道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;
  }
}
你可以试着用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新手需要实时生成函数,这看起来有点不寻常。是的,我想我可能在这里有些不知所措/伟大的如果这回答了您的问题,请不要忘记单击此答案投票按钮旁边的绿色复选标记,将其标记为已接受!伟大的如果这回答了您的问题,请不要忘记单击此答案投票按钮旁边的绿色复选标记,将其标记为已接受!