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是如何获得的,下面是我认为它是如何被执行的,但是如果错误请请纠正我.
我首先假设乘数的值变为3,然后函数makeMultiplier返回3*X.
从这里开始,通过赋值var multiplyBy3 = makeMultiplier(3),本质上multiplyBy3现在是一个返回3*X的函数.
因此,当插入10时,它返回3*10 = 30.
是的,你是对的,请记住,函数可以传递给变量和其他函数.
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.