Рассмотрим следующий код:
function f() {
f = eval("" + f);
console.log("Inside a call to f(), f is: \n%s", f);
}
f();
console.log("After a call to f(), f is: \n%s", f);
Я ожидал, что f
будет определяться во время выполнения. Однако в Chrome и IE это значение undefined
, когда вызывается первый console.log
, а в Firefox - undefined
, когда вызывается второй console.log
.
Почему f
не всегда определяется? Почему Chrome/IE и Firefox ведут себя по-другому?
Вывод на Firefox 26:
Внутри вызова функции f() f есть:
function f() { f = eval("" + f); console.log("Inside a call to f(), f is: \n%s", f); }
После вызова функции f() f:
undefined
Вывод на Chrome 31 и IE 11:
Внутри вызова функции f() f есть:
undefined
После вызова функции f() f:
function f() { f = eval("" + f); console.log("Inside a call to f(), f is: \n%s", f); }