function foo(a) {
function a() {
return 8;
}
return a();
y = 9;
}
console.log(foo() + " " + y);
これは、変数y
の定義されていないエラーを示します。JavaScript内の変数のスコープ
function foo(a) {
y = 9;
function a() {
return 8;
}
return a();
}
console.log(foo() + " " + y);
これは、ブラウザコンソールに8 9
を表示します。
var
キーワードを持たない変数を宣言すると、グローバル変数になります。
なぜ最初の機能がそのアイデアに従っていないのですか?
スタックオーバーフローに関する質問をする前に、いくつかの調査をしてください。 _ literalally_ Googleでこの質問のタイトルをコピーして貼り付けると、リンクされた複製が見つかりました。 – Cerbrus
@Cerbrusそれは可変スコープとは無関係であり、確かにその複製ではありません。 – MrCode
strictモードを使用し、2番目のスニペットも同様に例外をスローします。 'var'を使わないでください。適切なスコープで' var'を使うだけです! – Bergi