【发布时间】:2015-12-10 18:14:08
【问题描述】:
在雄辩的JavaScript中,作者提供了以下例子+散文:
稍作改动,我们可以把前面的例子变成一种 创建可乘以任意数量的函数。
function multiplier(factor) {
return function(number) {
return number * factor;
};
}
var twice = multiplier(2);
console.log(twice(5));
// → 10 The explicit
不需要 wrapValue 示例中的 localVariable,因为 参数本身就是一个局部变量。
考虑这样的程序需要一些练习。好心理 模型是将函数关键字视为“冻结”代码 它的主体并将其包装到一个包中(函数值)。所以当 你读了 return function(...) {...},把它想象成返回一个句柄 到一块计算,冻结以备后用。
在示例中,乘法器返回一个冻结的代码块 存储在两次变量中。最后一行然后调用值 这个变量,导致冻结代码(返回数*因子;)为 活性。它仍然可以从 创建它的乘数调用,此外它还可以访问 解冻时传递的参数,5,通过它的 number 参数。
javascript如何知道5 in:
console.log(twice(5));
假设是数字的值吗? JavaScript 本质上是在对自己说“我已经有 2 作为因子的值,我无法更改它,所以 5 必须是数字的值”。
换句话说
var twice = multiplier(2)
so twice = multiplier(2) {return function (number)}
thus twice(5) = multiplier(2) {return function (5)}
是这样吗?
如果乘法器中有另一个局部变量,我可以调用:
twice(5,10)
javascript 会知道这意味着:
factor = 2
number = 5
third variable = 10
【问题讨论】:
标签: javascript function