2
var my_var = 3;

function doIt() {

    console.log( my_var ); //why undefined?

    var my_var = 7;

    return ++my_var; 
} 

doIt(); // returns 8 as expected 

为什么 my_var 返回未定义而不是全局值 (3)?

4

1 回答 1

7

您在函数内部定义my_var为局部变量。JavaScript将变量提升到作用域的顶部,因此您的函数实际上是这样的:

function doIt() {
    var my_var;

    console.log( my_var );

    my_var = 7;

    return ++my_var; 
} 
于 2013-03-17T22:31:30.830 回答