我决定在尝试理解Javascript并再次阅读Javascript: The Good Parts方面向前迈出一步。这是第一个疑问:
假设我想避免使用全局变量,因为它们是邪恶的,所以我有以下内容:
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
,为什么第一行被“忽略”?我错过了什么?这里到底发生了什么?
我不仅在书中,而且在这个视频(第 26 分钟)中建立了这个例子
(如果有人认为更好的标题,请酌情提出......)