宣告全域性變數三種方式的異同

2022-08-18 17:09:12 字數 2132 閱讀 5308

方式112

vartest;

vartest = 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;

vara2 = 22;

window.a3 = 33;

1,for in window12

345for(ainwindow)

}

ie6/7/8/9:只彈出了a3,說明通過第一,二種方式宣告的全域性變數通過for in window時將獲取不到。

firefox/chrome/safari/opera :a1,a2,a3都彈出了,說明三種方式宣告的全域性變數,通過for in window時都能獲取到。

2,delete12

3456

78910

11trycatch(e)

trycatch(e)

trycatch(e)

結果如下

可以看到,

1,delete a2所有瀏覽器都是false。即通過var宣告的變數無法刪除,所有瀏覽器表現一致。這在犀牛書上也有提到。

2,通過window.a3方式宣告的全域性變數在ie6/7/8中均無法刪除,ie9/firefox/chrome/safari/opera中卻可以。

雖然有以上兩點不同,但當用in運算時,都返回true。12

3alert('a1'inwindow);//true

alert('a2'inwindow);//true

alert('a3'inwindow);//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 ...