Я решил сделать один шаг вперед, пытаясь понять 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)
(если кто-то думает о лучшем титуле, пожалуйста, предложите, если это необходимо...)