Javascript: почему доступ к переменной закрытия может быть медленным

Недавно я прочитал это руководство по производительности Let's make the web faster и был озадачен рекомендациями "Avoiding pitfalls with closures" (как будто эти советы были даны для пользователей CommonLisp, у которых скопинг переменных динамический):

var a = 'a';
function createFunctionWithClosure() {
 var b = 'b';
 return function () {
 var c = 'c';
 a;
 b;
 c;
 };
}

var f = createFunctionWithClosure();
f();

когда вызывается f, обращение к a происходит медленнее, чем обращение к b, которое медленнее, чем обращение к c.

Совершенно очевидно, что обращение к локальной переменной c быстрее, чем b, но если итерпретатор написан правильно (без динамического скопирования - что-то вроде цепочки хэш-таблиц...), то разница в скорости должна быть незначительной. Или нет?

5
задан Gumbo 12 February 2012 в 13:03
поделиться