方式112
var
test;
var
test = 5;
需注意的是該句不能包含在function內,否則是區域性變數。這是第一種方式宣告全域性變數。
方式2
1test = 5;
沒有使用var,直接給識別符號test賦值,這樣會隱式的宣告了全域性變數test。即使該語句是在乙個function內,當該function被執行後test變成了全域性變數。
方式312
window.test;
window.test = 5;
這種方式經常被用到乙個匿名函式執行後將一些函式公開到全域性。 如jquery1.5中最末一句
1window.jquery = window.$ = jquery;
如果只是使用變數test,那麼三種方式將沒有什麼區別。比如:alert(test) 都將顯示5。但三種方式在某些情況下還是有區別的。分別按以上三種方式宣告三個變數a1,a2,a3。12
3a1 = 11;
var
a2 = 22;
window.a3 = 33;
1,for in window12
345for
(a
in
window)
}
ie6/7/8/9:只彈出了a3,說明通過第一,二種方式宣告的全域性變數通過for in window時將獲取不到。
firefox/chrome/safari/opera :a1,a2,a3都彈出了,說明三種方式宣告的全域性變數,通過for in window時都能獲取到。
2,delete12
3456
78910
11try
catch
(e)
try
catch
(e)
try
catch
(e)
結果如下
可以看到,
1,delete a2所有瀏覽器都是false。即通過var宣告的變數無法刪除,所有瀏覽器表現一致。這在犀牛書上也有提到。
2,通過window.a3方式宣告的全域性變數在ie6/7/8中均無法刪除,ie9/firefox/chrome/safari/opera中卻可以。
雖然有以上兩點不同,但當用in運算時,都返回true。12
3alert(
'a1'
in
window);
//true
alert(
'a2'
in
window);
//true
alert(
'a3'
in
window);
//true
用with開啟物件window閉包時,所有瀏覽器也表現一致,如下12
3456
78910
11with
(window)
if
(a2)
if
(a3)
}
js宣告全域性變數的方式
在js中有3中宣告全域性變數的方式 第一種使用var 變數名,在方法外部宣告 1 var msg 預設值undefined 2 function 6 function setmsg 9 function showmsg 第二種方式在方法內部宣告,但是不使用var關鍵字 1 function 5 fu...
全域性變數與靜態全域性變數的異同
參考 1 生存週期 變數從定義到銷毀的時間範圍。存放在全域性資料區的變數的生存週期存在於整個程式執行期間,而存放在棧中的資料則隨著函式等的作用域結束導致出棧而銷毀,除了靜態變數之外的區域性變數都存放於棧中。2 作用域 變數的可見 域 塊作用域,函式作用域,類作用域,程式全域性作用域 3 static...
Go中變數宣告的三種方式
第一種 第一種變數宣告方式,var 變數名 變數型別 var name string name gpwer 第二種 第二種變數宣告方式,注意 冒號和等號之間是沒有空隙的,否則會報編譯錯誤 name gpwer 第三種 根據值自行判斷變數的型別 var name gpwner 第一種 var x,y ...