JavaScript范围查询?

时间:2013-03-17 22:30:14

标签: javascript

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返回 undefined 而不是全局值(3)?

1 个答案:

答案 0 :(得分:7)

您将my_var定义为函数内的局部变量。 JavaScript hoists变量位于范围的顶部,因此您的函数确实如下所示:

function doIt() {
    var my_var;

    console.log( my_var );

    my_var = 7;

    return ++my_var; 
}