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 に答える