函數全局變量對內部函數的影響

在函數內部定義的全局變量,如果函數沒有被調用,那麼該全部變量是無效的。

在函數預編譯期間,只會對函數的函數名、函數內各種標識符進行檢索,建立索引

<script>
        var a=1;
        (function f(){
            alert(a);
            var a=2;
            alert(a);
        })()
</script>

上面函數內部聲明瞭同名變量a,所以在預編譯期間,JavaScript就用局部變量覆蓋掉了全局變量對函數內部的影響。而在執行期間,局部變量a還沒有賦值所以第一個alert的值爲undefined,第二個alert,局部變量的值爲2.

<script>
        var a=1;
        (function f(){
            alert(a);
        })()
</script>

上面函數內部沒有在聲明局部同名變量,所以全局變量起作用,alert(l);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章