這篇文章主要介紹了JavaScript中聲明全域變數三種方式的異同。變數及變數聲明是一門語言最基本的概念,初學者都會很快掌握。需要的朋友可以過來參考下,希望對大家有所協助變數及變數聲明是一門語言最基本的概念,初學者都會很快掌握。JavaScript中聲明變數也是如此,很簡單var(關鍵字)+變數名(標識符)。 方式1 var test;var test = 5;需注意的是該句不能包含在function內,否則是局部變數。這是第一種方式聲明全域變數。 方式2 test = 5;沒有使用var,直接給標識符test賦值,這樣會隱式的聲明了全域變數test。即使該語句是在一個function內,當該function被執行後test變成了全域變數。 方式3 window.test;window.test = 5;這種方式經常被用到一個匿名函數執行後將一些函數公開到全域。 如JQuery1.5中最末一句 window.jQuery = window.$ = jQuery; 如果只是使用變數test,那麼三種方式將沒有什麼區別。比如:alert(test) 都將顯示5。但三種方式在某些情況下還是有區別的。分別按以上三種方式聲明三個變數a1,a2,a3。 a1 = 11;var a2 = 22;window.a3 = 33; 1,for in window for(a in window){ if(a=='a1'||a=='a2'||a=='a3'){ alert(a) }}IE6/7/8/9:只彈出了a3,說明通過第一,二種方式聲明的全域變數通過for in window時將擷取不到。Firefox/Chrome/Safari/Opera :a1,a2,a3都彈出了,說明三種方式聲明的全域變數,通過for in window時都能擷取到。 2,delete try { alert(delete a1);}catch(e){alert('無法delete a1')} try{ alert(delete a2);}catch(e){alert('無法delete a2')} try{ alert(delete a3);}catch(e){alert('無法delete a3')} 可以看到,1,delete a2所有瀏覽器都是false。即通過var聲明的變數無法刪除,所有瀏覽器表現一致。這在犀牛書上也有提到。 2,通過window.a3方式聲明的全域變數在IE6/7/8中均無法刪除,IE9/Firefox/Chrome/Safari/Opera中卻可以。 雖然有以上兩點不同,但當用in運算時,都返回true。 alert('a1' in window);//truealert('a2' in window);//truealert('a3' in window);//true用with開啟對象window閉包時,所有瀏覽器也表現一致,如下 with(window){ if(a1){ alert(a1);//11 } if(a2){ alert(a2);//22 } if(a3){ alert(a3);//33 } }