Производительность Javascript с закрытием

var name = function(n) {
    var digits = ['one','two','three','four'];
    return digits[n];
}

var namenew = (function() {
    digits = ['one','two','three','four'];
    return function(n) {
        return digits[n];
    }
}());

Обе версии дают одинаковый результат, однако говорят, что вторая версия намного быстрее, чем первая версия.

Как я понимаю, первая версия выполняет функцию каждый раз, тогда как вторая версия сохраняет результат выполнения. Это то, что меня смущает как функциональную / обычную Программист OOPS.

Как можно сохранить функцию с ее внутренним контекстом? Что происходит под капотом? Может кто-нибудь уточнить?

15
задан Paul Sonier 7 July 2011 в 17:28
поделиться