использование памяти вложенных функций в JavaScript - PullRequest
3 голосов
/ 12 марта 2009

Я вроде понимаю замыкания в javascript, но в чем я не уверен, так это в том, как они обрабатывают вложенные функции. Например:

var a = function(o) {
    o.someFunction(function(x) {
        // do stuff
    });
}

Я знаю, что новое закрытие создается каждый раз, когда я вызываю функцию a, но включает ли это закрытие также новый экземпляр анонимной функции, переданной в someFunction? Было бы лучше, если бы я сделал ff вместо:

var b = function(x) { /* do stuff */ }
var a = function(o) {
    o.someFunction(b);
}

1 Ответ

3 голосов
/ 12 марта 2009

В вашем первом примере каждый раз, когда вызывается a, анонимная функция определяется и передается в someFunction(). Это дороже, чем во втором примере, который является более эффективным методом, поскольку функция (теперь она называется b) определяется только один раз.

Я задал вопрос, похожий на этот, несколько месяцев назад: он также может помочь вам. Влияет ли использование анонимных функций на производительность?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...