首頁 web前端 js教程 探討JavaScript中宣告全域變數三種方式的異同_javascript技巧

探討JavaScript中宣告全域變數三種方式的異同_javascript技巧

May 16, 2016 pm 05:10 PM
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')}

結果如下

探討JavaScript中宣告全域變數三種方式的異同_javascript技巧

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

2,透過window.a3方式宣告的全域變數在IE6/7/8中皆無法刪除,IE9/Firefox/Chrome/Safari/Opera中卻可以。

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

alert('a1' in window);//true
alert('a2' in window);//true
alert('a3' in window);//true
用with開啟物件window閉包時,所有瀏覽器也表現一致,如下

with(window){
 if(a1){
  alert(a1);//11
 }
 if(a2){
  alert(2);/22
 }
 if(a3){
  alert(a3);//33
 } 
}

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

C++ 函數的局部變數和全域變數有什麼不同? C++ 函數的局部變數和全域變數有什麼不同? Apr 19, 2024 pm 03:42 PM

C++ 函數的局部變數和全域變數有什麼不同?

如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

簡易JavaScript教學:取得HTTP狀態碼的方法

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript與WebSocket:打造高效率的即時天氣預報系統

如何在JavaScript中取得HTTP狀態碼的簡單方法 如何在JavaScript中取得HTTP狀態碼的簡單方法 Jan 05, 2024 pm 01:37 PM

如何在JavaScript中取得HTTP狀態碼的簡單方法

See all articles