詳細については、私が撮ったスクリーンショットを参照してください
<script> var bar=function(){ var foo=function(){} foo=10; } var foo=1; bar(); alert(foo); </script>
jsの宣言部分が一番上にあり、関数内のfooはローカル変数でグローバルのfooには影響しません。
1 関数宣言が先頭になります
2 変数宣言も先頭になります3 変数宣言よりも関数宣言が先頭になります:)4 JSエンジンで解析する際は変数と代入文が一緒に書かれます。 、宣言と代入の 2 つの部分に分割され、宣言が一番上にあり、代入は元の位置に保持されます 5 宣言された変数は繰り返し宣言されません
上記の点を参照すると、理由がわかります!
コードの実際の効果は次のとおりです:
function bar(){ function foo(){} var foo;//实际上无效 foo=10; } var foo; bar(); foo=1; console.log(foo);
jsの宣言部分が一番上にあり、関数内のfooはローカル変数でグローバルのfooには影響しません。
1 関数宣言が先頭になります
2 変数宣言も先頭になります
3 変数宣言よりも関数宣言が先頭になります:)
4 JSエンジンで解析する際は変数と代入文が一緒に書かれます。 、宣言と代入の 2 つの部分に分割され、宣言が一番上にあり、代入は元の位置に保持されます
5 宣言された変数は繰り返し宣言されません
上記の点を参照すると、理由がわかります!
コードの実際の効果は次のとおりです: