Я знаю, что эту форму:Использует var foo = function foo() {}; выражение, создающее утечку памяти в IE <9?
var foo = function bar() {};
просочится имя bar
в области видимости и создать две функции в jscript
.
Как насчет:
var foo = function foo() {};
?
Он по-прежнему просачивает название в область охвата, но он все равно там (от thx до var foo
).
Я знаю, что он будет определен во всей области видимости, но будет ли он создавать две функции и сразу разыгрывать или уничтожать одну из них или это все еще вызывает утечку?
В этой ситуации:
var bar = function() {
foo();
var foo = function foo() {};
}
Будет ли у нас есть две функциональные объекты внутри bar()
?
редактировать
Хорошо это определенно создает две функциональные объекты, теперь вопрос: имеет ли функция, созданная по имени определению получить разыменованных и убрала с помощью ГХ после var foo
линии, так что не больше, чем one 'live' foo
экземпляр в любое время в коде выше?
Или IE будет IE оставить его болтающимся навсегда, так как нет никакого способа «разыменовать» созданный по определению foo
, и его даже не должно быть там в первую очередь?
«в IE» ... только что это было исправлено с IE9 ... – Christoph
@ Christoph изменил вопрос, thx – soulcheck
http://kangax.github.io/nfe/ – Ven