如何悬挂在variable
条件下声明的if
而不是function
?
范例1:
var x = 1;
if(a = 1) {
x += typeof a;
}
x; // 1number
a; // 1
在function
和SpiderMonkey
中与V8
进行相同的尝试时,没有发生提升。为什么不?在if
条件下运作会怎样?
示例2:
var x = 1;
if ( function f () { return 9; } ) {
x += typeof f;
}
x; // 1undefined
f; // ReferenceError: f is not defined
但是,在成功功能的if
中定义了功能时
示例3:
var x = 1;
if ( true ) {
x += typeof f;
function f() { return 1; }
}
x; // 1function
f; // f()
typeof f; // function
即使条件为假,函数也会被提升 示例4:
var x = 1;
if ( false ) {
x += typeof f;
function f() { return 1; }
}
x; // 1
f; // undefined not ReferenceError: f is not defined
// f still got hoisted
示例2的内容是什么?为什么在示例1中执行变量时未悬挂函数?