javascript - 使用新参数创建已创建函数的副本?

标签 javascript function

我有一个函数 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/

相关文章:

function - Vim 函数将代码函数复制到剪贴板

javascript - 相同功能按钮,但分别使用 Vue 和 Vuetify

python - 电报机器人返回空

在 C 中调用函数不产生函数

javascript - Eclipse Neon - Javascript 控制台输出未显示

javascript - 打印预览 CSS,但在浏览器中

javascript - 在 Meteor.js 中导入/读取 CSV

javascript - 可拖动范围在附加后不可拖动

javascript - 引用错误 : variable is not defined with underscore template

javascript - 基本的 JavaScript 函数语法