2013-03-17 96 views
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返回undefined改为全局值(3)?JavaScript范围查询?

回答

7

您将my_var定义为函数内部的局部变量。 JavaScript的hoists变量范围的顶端,所以你真的函数的作用是这样的:

function doIt() { 
    var my_var; 

    console.log(my_var); 

    my_var = 7; 

    return ++my_var; 
} 
+1

我一直在做JS了很长一段时间,但不知道这件事。今天学了点儿新东西。干杯搅拌机! – 2013-03-17 22:44:38