为了账号安全,请及时绑定邮箱和手机立即绑定

使用新参数创建已制作功能的副本?

使用新参数创建已制作功能的副本?

哔哔one 2019-04-17 18:19:08
我有一个功能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;   }}
查看完整描述

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


查看完整回答
反对 回复 2019-05-17
  • 2 回答
  • 0 关注
  • 432 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信