Я решил сделать еще один шаг вперед, пытаясь понять Javascript и снова прочитать Javascript :Хорошие части . И вот первое сомнение:
Допустим, я хочу избежать использования глобальных переменных, потому что они вредны, и поэтому у меня есть следующее:
var digit_name = function(n) {
var names = ['zero','one','two','three'];
return names[n];
}
Д.Крокфорд утверждает, что это медленно , потому что каждый раз, когда функция вызывается, выполняется новая реализация names
. Итак, затем он переходит к решению замыкания , делая это:
var digit_name = function () {
var names = ['zero', 'one', 'two', 'three'];
return function (n) {
return names[n];
}
}();
Это делает переменную names
хранимой в памяти, и поэтому она не создается каждый раз, когда мы вызываем digit_name
.
Я хочу знать, почему? Когда мы вызываем digit_name
, почему первая строка «игнорируется»?Что мне не хватает? Что здесь происходит на самом деле?
Я взял этот пример не только из книги, но и из этого видео (. минута 26)
(если кто-то думает о лучшем названии, предложите, если это уместно...)