如果条件未在JavaScript中悬挂,为什么要起作用?

时间:2018-09-03 10:22:55

标签: javascript node.js ecmascript-6 ecmascript-5 ecmascript-2017

如何悬挂在variable条件下声明的if而不是function? 范例1:

var x = 1;
if(a = 1) {
    x += typeof a;
}
x;    // 1number
a;    // 1

functionSpiderMonkey中与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中执行变量时未悬挂函数?

0 个答案:

没有答案