0
a = 555
console.log(global.a)

「未定義」を出力します

Node のグローバル変数は object に移動すると言われましたが、global見つかりません。私がやりたいことは、タイプミスを見つけることができるように、「プログラムで作成したすべてのグローバル変数を表示する」関数を作成することです。(最近starCounter、ローカルパラメータに代入する代わりにグローバル変数を宣言しましたstartCounter

アップデート:

実際のテスト ファイルにはさらに 2 行あり、それらの行が問題を引き起こしていることに気付きました。

a = 555
console.log(global.a)
return; 
var a = Math.pow(4, 3)

しかし今、これは私をさらに困惑させます?! returnステートメントの後に決して到達しないローカル変数の割り当てが、グローバル変数の割り当てを台無しにするのはなぜですか?

4

3 に答える 3

1
a = 555
console.log(global.a)
return; 
var a = Math.pow(4, 3)

しかし今、これは私をさらに困惑させます?! returnステートメントの後に決して到達しないローカル変数の割り当てが、グローバル変数の割り当てを台無しにするのはなぜですか?

巻き上げのため。割り当てに到達して実行されることはありませんが、変数は現在のスコープでキーワードで宣言されています。関数宣言と同様に、(関数) スコープに入った時点から使用できます。あなたのコードはと同等ですvar

var a;
a = 555
console.log(global.a)
return; 
a = Math.pow(4, 3)
于 2013-10-25T11:46:52.070 に答える