Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery:将函数作为变量传递_Javascript - Fatal编程技术网

Javascript Jquery:将函数作为变量传递

Javascript Jquery:将函数作为变量传递,javascript,Javascript,我正在通过这个网站学习jquery,我真的很困惑如何将函数作为变量传递(如果我的措辞正确的话)。举个例子: function makeAddFunction(amount) { function add(number) { return number + amount; } return add; } var addTwo = makeAddFunction(2); var addFive = makeAddFunction(5); show(addTwo(1) + add

我正在通过这个网站学习jquery,我真的很困惑如何将函数作为变量传递(如果我的措辞正确的话)。举个例子:

function makeAddFunction(amount) {
  function add(number) {
    return number + amount;
  }
  return add;
}

var addTwo = makeAddFunction(2);
var addFive = makeAddFunction(5);
show(addTwo(1) + addFive(1));
我知道makeAddFunction(2)说:“makeAddFunction接受可变数量,所以将2传递给它”。 我不明白两件事:

  • 当您将一个变量(addTwo和addFive)声明为函数时会发生什么?var是函数的结果,还是函数的引用
  • 当addTwo/addFive不接受任何参数时,如何将(1)传递给addTwo/addFive(在代码的最后一行中)?此外,(1)如何通过函数add中的“number”变量
  • 谢谢大家!

    ad1

    逐步:

    var addTwo=makeAddFunction(2)

    变成

    var addTwo=function(number){returnnumber+2;}

    这相当于:

    函数addTwo(number){返回数+2;}

    所以两个人接受一个论点

    公元2年

    show(加两(1)+加五(1))

    变成

    show((1+2)+(1+5))

    show(3+6)


    show(9)

    makeAddFunction
    返回函数引用。通过函数引用,您可以调用它

    执行
    makeAddFunction时(2),需要检查的重要内容是返回的内容。如您所见,它返回另一个函数
    add
    。所以实际上,执行
    var addTwo=makeAddFunction(2)

    var addTwo = function add(number) {
        return number + 2;
    }
    
    作为证明,请检查您可以做什么:

    console.log(makeAddFunction(2)); //Will Log function add(){...}
    console.log(makeAddFunction(2)(1)); //Will Log 3
    

    实际上,您只是在创建“动态函数”,或者它的正确名称:

    首先,它与jquery无关,这些都是javascript特性。第二部分称为
    makeAddFunction
    返回一个函数(每次调用时都会返回一个不同的函数)。这使得
    addTwo
    addFive
    都可以运行。所以你可以调用它们并传递它们参数,就像你对其他函数一样。对。。但是addTwo(1)如何将(1)一直发送到函数“add”的“number”变量呢?我的意思是,如果您要将(1)传递给makeAddFunction变量“number”而不是“amount”…哦,等等。变量“addTwo”是否成为函数(编号)。。。因为在makeAddFunction中,我们返回“add”?@user3585210,
    makeAddFunction
    返回
    add
    ,并且
    add
    是一个函数,是的。谢谢,这很有意义