JS中用var宣告變數和不用的區別
阿新 • • 發佈:2019-01-22
在JS中宣告變數時用var和不用var有什麼區別,我查閱了很多的資料和書籍再加上我自己的理解來講述一下我自己的看法。
- 在函式內部宣告變數
在函式內部如果用var宣告變數和不用時有很大差別,用var宣告的是區域性變數,在函式外部訪問這個變數是訪問不到的,沒var宣告的是全域性變數。在函式外部是可以訪問到的。
function ff(){
var a=1;
console.log(a); //1
}
ff();
console.log(a); //a is not defined
如果去掉var來宣告變數a:
function ff(){
a=1;
console.log(a); //1
}
ff();
console.log(a); //1
2.全域性作用域內宣告變數
在這裡用var宣告的變數我們之所以認為宣告的是全域性變數是因為它現在處於的作用域範圍是全域性,實際上它宣告也是區域性變數,只是現在它的區域性變數是全域性而已,所以就相當於起著全域性變數的作用。全域性作用域中不用var宣告的也是全域性變數,那麼它倆有什麼區別呢?
比較var a= 1 跟 a= 1,前者是變數宣告,帶不可刪除屬性,因此無法被刪除;後者為全域性變數的一個屬性,因此可以從全域性變數中刪除
var num1 = 1;
num2 = 2;
console.log(num1);//1
console.log (num2);//2
delete num1; //無法刪除,會報錯
delete num2; //刪除
console.log(num2);//num2 is not defined
前者是變數宣告,帶不可刪除屬性,因此無法被刪除;後者為全域性變數的一個屬性,因此可以從全域性變數中刪除。
“`