(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;