Рассмотрим следующий код:
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); }