Javascript函数示例序列

Que*_*ons 0 javascript console function

function makeMultiplier(multiplier) {
  var myFunc = function (x) {
    return multiplier * x;
  };

  return myFunc;
}

var multiplyBy3 = makeMultiplier(3);
console.log(multiplyBy3(10));
Run Code Online (Sandbox Code Playgroud)

所以我从在线课程中得到了这个例子,控制台打印:30

我不完全理解30是如何获得的,下面是我认为它是如何被执行的,但是如果错误请请纠正我.

  1. 我首先假设乘数的值变为3,然后函数makeMultiplier返回3*X.

  2. 从这里开始,通过赋值var multiplyBy3 = makeMultiplier(3),本质上multiplyBy3现在是一个返回3*X的函数.

  3. 因此,当插入10时,它返回3*10 = 30.

Har*_*ner 5

是的,你是对的,请记住,函数可以传递给变量和其他函数.

  • makeMultiplier返回对函数闭包的引用,它还没有执行它.
  • var multiplyBy3 = makeMultiplier(3); 将值3放入闭包函数,并返回对它的引用(仍然不执行它).

在这个阶段,我们有:

function multiplyBy3(x) {
    return 3 * x;
}

console.log(multiplyBy3(10));
Run Code Online (Sandbox Code Playgroud)
  • multiplyBy3(10) 调用对闭包函数的引用并传入10.