Javascript のオブジェクトのスコープについて。
下記の例ではグローバル(ウィンドウ)スコープの "a" を取得し、表示している。
var a = "global"; function fn1() { alert(a); //global } fn1();
メソッドの中に同じ変数名の変数がある時にはまた違った動きを見せた。
var a = "global"; function fn2() { alert(a); //undefined var a = "local"; alert(a); //local alert(window.a); //global } fn2();
予想では "global" と表示されると思われたところで "undefined" と表示された。
このことから推測すると「メソッド内で単に上から処理しているだけ」というわけではないようだ。
2 Comments:
こんにちは。
この挙動は、「すべての変数は、当該スコープの先頭で生成される(スコープの先頭で宣言されたものとみなされる)」というルールに基づくものですね。
var a = "global";
function fn2() {
var a;
alert(a); //undefined
a = "local";
alert(a); //local
alert(window.a); //global
}
>スコープの先頭で宣言されたものとみなされる
なるほど~
勉強になりました。有難うございます。
コメントを投稿