Javascriptの学習で発生した問題のまとめ--変数の役割ドメインの小さな角について

1234 ワード

まず2つのコードを入力します.この2つのコードはhtml 5の環境で実行されます.
コード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実行エンジンによって実装方法が異なる場合がありますが、大体このように理解できます.