使用var和不使用var宣告變數的區別
在介紹之前首先說明一點,在嚴格模式下,不使用var宣告變數將會報錯,所以最好在任何時候宣告變數都要使用var關鍵字。
非嚴格模式或者非新的js版本中,宣告一個變數var關鍵字不是必須的,下面就介紹一下使用var和不使用var之間的區別。
先看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼function func(){ var url="http://www.softwhy.com"; webName="螞蟻部落"; } func(); //console.log(url)會報錯 console.log(webName);
在函式作用域內,使用var宣告的變數只能夠在此函式作用域內使用,而不用var宣告的變數,可以在全域性範圍內使用。
再來看一段程式碼:
[JavaScript] 純文字檢視 複製程式碼var url="http://www.softwhy.com"; webName="螞蟻部落"; console.log(window.url); console.log(window.webName);
在全域性作用域宣告的變數,無論加不加var都是作為全域性物件的一個屬性,但這並不說明它們兩者沒有區別,看如下程式碼:
[JavaScript] 純文字檢視 複製程式碼var url="http://www.softwhy.com"; webName="螞蟻部落"; var urlTx=Object.getOwnPropertyDescriptor(window,'url') var webNameTx=Object.getOwnPropertyDescriptor(window,'webName') for(var propUrlTx in urlTx){ console.log(propUrlTx+":"+urlTx[propUrlTx] ); } for(var propWebNameTx in webNameTx){ console.log(propWebNameTx+":"+webNameTx[propWebNameTx]); }
從上面程式碼的輸出值來看,兩者還是有區別的,兩個屬性的configurable特性值是不同的,帶var的是false,不帶var的是true。configurable決定了一個屬性是否可以被delete運算子刪除,如果是false就不能刪除,如果為true則能夠被刪除,看如下程式碼:
[JavaScript] 純文字檢視 複製程式碼var url="http://www.softwhy.com"; webName="螞蟻部落"; delete window.url; delete window.webName; console.log(window.url); console.log(window.webName);
關於Object.getOwnPropertyDescriptor()參閱Object.getOwnPropertyDescriptor()一章節。
相關文章
- 變數宣告帶var與不帶var的區別變數
- JavaScript變數宣告帶var與不帶var區別JavaScript變數
- var與let宣告變數的區別變數
- var、let、const宣告變數的區別變數
- 變數和函式宣告提升,let和var const區別變數函式
- var、let、const變數宣告的區別及特點變數
- JavaScript全域性作用域下,變數加var和不加var的區別。JavaScript變數
- var 和 let 的區別
- var和public的區別
- Go 中 type var string 和 type var = string 的區別Go
- ${VAR:=預設值}和${VAR:-預設值} 區別
- var和let/const的區別
- var、let和const的區別
- 教你理解let和var的區別
- 淺談let和var的區別
- var、const、let 的區別
- let與var的區別
- js中var和let的快速區別JS
- var let const區別
- let const var 區別
- let,const,var區別
- CSS Var 自定義屬性中使用 Scss 變數CSS變數
- TypeScript let與var的區別TypeScript
- java 10的區域性變數型別推斷Var的用法 - foojayJava變數型別
- CSS變數var()語法和用法和特性CSS變數
- ES6中let和var和const的區別
- js中 let 與 var 的區別JS
- JavaScript中let、const、var 的區別JavaScript
- 1.變數:var,let,const變數
- ES6 let和var的區別是什麼?
- JavaScript 中的 Var,Let 和 Const 有什麼區別JavaScript
- JavaScript中的var、let 及 const 區別JavaScript
- var、let和const三者有哪些區別?
- ES6中var,let,const的區別
- es6 let const與var 的區別
- ES5 和 ES6:let const var 區別
- ES6中的let與var的區別
- [面試專題]從for迴圈看let和var的區別面試
- 1分鐘帶你瞭解var let 和 const 的區別