在函數裏存在的全局變量

 (function(){
        var a=b=5;
    })();
    console.log(b); // 5
    console.log(a); // a is not defined 

分析:

var a=b=5 這句代碼可以拆分爲 b=5,var a=b 這兩句;

b=5 是全局變量,在立即執行函數裏賦值爲5;在這裏可以理解爲window.b=5

var a=b   其中a是函數裏申明出來的變量,函數一執行完,a就釋放了,在全局輸出a時會報錯:a is not defined

在這裏需要了解js中全局變量的三種寫法:
var test; var test = 5;(需注意的是該句不能包含在function內,否則是局部變量)


test = 5;沒有使用var,直接給標識符test賦值,這樣會隱式的聲明瞭全局變量test。即使該語句是在一個function內,當該function被執行後test變成了全局變量。


window.test;window.test = 5;這種方式經常被用到一個匿名函數執行後將一些函數公開到全局。 如JQuery1.5中最末一句
window.jQuery = window.$ = jQuery;

 

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