【发布时间】:2015-10-18 06:50:12
【问题描述】:
所以假设我有这样的东西
var x = 1;
if (function f(){}) {
x += typeof f;
}
x;
这会输出“1undefined”。我认为它应该输出“1function”,因为函数 f(){} 应该被提升到 if 之上。显然不是这样——为什么?我认为函数声明和主体总是被提升到范围的顶部?
【问题讨论】:
-
我认为这是一个命名函数表达式,而不是函数声明。名称的范围只是被定义函数的主体,而不是周围的函数。
-
就像
var foo = function f() {};。
标签: javascript hoisting