我正在阅读《JavaScript 高级程序设计》。第三章介绍了 "闭包" 的概念,并提供了几个示例之一如下:
我觉得我理解了这个概念。如果我首先执行
另外,为什么如果我执行
谢谢。
function multiplier(factor) {
return function(number) {
return number * factor;
};
}
var twice = multiplier(2);
console.log(twice(5));
// → 10
我觉得我理解了这个概念。如果我首先执行
console.log(twice)
,由于变量number
未定义,我得到的是[Function]
。我不明白的是twice(5)
如何工作。为什么本地变量number
被初始化为值5
?另外,为什么如果我执行
console.log(multiplier(2,5))
,我没有得到10作为结果?谢谢。