Javascriptの学習で発生した問題のまとめ--変数の役割ドメインの小さな角について
1234 ワード
まず2つのコードを入力します.この2つのコードはhtml 5の環境で実行されます.
コード1
コード2:
ここで,A,B,C,D,E,Fがそれぞれ出力する結果は「ITeYe」,「zhujiaojiao」,「undefined」,「zhujiaojiao」,「ITeYe」,「Fanny」である.
質問1:なぜAとCで出力された結果が違うのですか?
質問2:なぜEで出力された結果が最初の値なのか、Fで出力されたのはそうではないのか.
このような観点をまとめることができます.
従来、「var」は役割ドメイン上の変数を定義していたが、「var」の識別子がなくてもグローバルとオブジェクトの属性である可能性があり、コードがグローバル役割ドメインで実行されると、役割ドメインはオブジェクトwindowとなり、すべて、「var」があるかどうかは関係ない.もちろん、javascript実行エンジンによって実装方法が異なる場合がありますが、大体このように理解できます.
コード1
<script>
var yourname="ITeYe";
myname="zhujiaojiao";
changeName();
function changeName(){
alert(yourname); //A
alert(myname); //B
}
</script>
コード2:
<script>
var yourname="ITeYe";
myname="zhujiaojiao";
changeName();
function changeName(){
alert(yourname); //C
alert(myname); //D
var yourname="beijibingshan";
myname="Fanny";
}
alert(yourname); //E
alert(myname); //F
</script>
ここで,A,B,C,D,E,Fがそれぞれ出力する結果は「ITeYe」,「zhujiaojiao」,「undefined」,「zhujiaojiao」,「ITeYe」,「Fanny」である.
質問1:なぜAとCで出力された結果が違うのですか?
質問2:なぜEで出力された結果が最初の値なのか、Fで出力されたのはそうではないのか.
このような観点をまとめることができます.
従来、「var」は役割ドメイン上の変数を定義していたが、「var」の識別子がなくてもグローバルとオブジェクトの属性である可能性があり、コードがグローバル役割ドメインで実行されると、役割ドメインはオブジェクトwindowとなり、すべて、「var」があるかどうかは関係ない.もちろん、javascript実行エンジンによって実装方法が異なる場合がありますが、大体このように理解できます.