请告诉我它的流程
function multiplier(factor) {
return function(number) {
return number * factor;
};
}
var twice = multiplier(2);
console.log(twice(5));
// → 10
答案 0 :(得分:1)
第一个函数返回另一个函数,基本上是这样的:
function(number) {
return number * 2;
}
因为它记得"来自它的外部范围的factor
参数。然后,此返回的函数将简单地应用于参数5。
答案 1 :(得分:0)
当你调用乘数函数时,它会返回另一个函数,
function(number) {
return number * 2;
};
现在"两次"是一个函数,具有上面的函数表达式。
所以当你用参数5调用两次函数时,即两次(5),它返回" 10"。
每个人都会得到的疑问是,"因素"即使在乘数函数的范围之外,变量仍然存在。
这是因为JavaScript中的词法作用域,即外部函数变量可用于内部函数。
As" factor"在return语句中使用,javascript解析器必须为其内部函数保留其值。这叫做Closure。
Simply Closure是一个具有扩展内存的函数。