我将尝试更深入地理解Javascript,重新阅读JavaScript: The Good Parts。这里有一个疑问:
假设我想要避免使用全局变量,因为它们是有害的,那么我应该这样写:
D.Crockford声称这是慢的,因为每次调用函数时,都会进行
这样做会将
我不仅基于书中的例子,还基于这个video(第26分钟)
(如果有人想到更好的标题,请提出适当的建议...)
假设我想要避免使用全局变量,因为它们是有害的,那么我应该这样写:
var digit_name = function(n) {
var names = ['zero','one','two','three'];
return names[n];
}
D.Crockford声称这是慢的,因为每次调用函数时,都会进行
names
的新实例化。因此,他采用闭包解决方案,做法如下:var digit_name = function () {
var names = ['zero', 'one', 'two', 'three'];
return function (n) {
return names[n];
}
}();
这样做会将
names
变量存储在内存中,因此每次调用digit_name
时都不会被实例化。
我想知道为什么?当我们调用digit_name
时,为什么第一行被“忽略”了?我漏掉了什么?这里真正发生了什么?我不仅基于书中的例子,还基于这个video(第26分钟)
(如果有人想到更好的标题,请提出适当的建议...)
()
,意味着digit_name
获取外部函数的返回值,即内部函数,那么这将更有意义。 - apsillersdigit_name
)。 - nnnnnn