JavaScript 的變數的全域性作用域、區域性作用域、塊級作用域理解
這是我參與8月更文挑戰的第14天,活動詳情檢視:8月更文挑戰
JavaScript 變數是儲存資料值的容器。 JavaScript 的變數的作用域可分為全域性作用域、區域性作用域、塊級作用域理解。 所有 JavaScript 變數必須以唯一的名稱的標識。
這些唯一的名稱稱為識別符號。
識別符號可以是短名稱(比如 x 和 y),或者更具描述性的名稱(age、sum、totalVolume)。
構造變數名稱(唯一識別符號)的通用規則是:
- 名稱可包含字母、數字、下劃線和美元符號
- 名稱必須以字母開頭
- 名稱也可以 $ 和 _ 開頭(但是在本教程中我們不會這麼做)
- 名稱對大小寫敏感(y 和 Y 是不同的變數)
- 保留字(比如 JavaScript 的關鍵詞)無法用作變數名稱
提示:JavaScript 識別符號對大小寫敏感。
1、全域性變數
全域性變數:其他任何位置使用var宣告的的變數,函式除外,那麼這個變數就是全域性變數,全域性變數可以在頁面的任何位置使用。
全域性變數,如果頁面不關閉,那麼變數所佔用的記憶體就不會釋放,就會佔空間,消耗記憶體。
var lut = 520;
console.log(lut); // 520
2、區域性變數
區域性變數:在函式內部定義的變數,是區域性變數,外面不能使用 。
function lut() {
var luzp = 410;
}
lut();
console.log(luzp); // luzp is not defined 報錯
3、塊級作用域
塊級作用域:一對大括號就可以看成是一塊,在這塊區域中定義的變數,只能在這個區域中使用,但是在js中在這個塊級作用域中定義的變數,外面也能使用。\ 說明:js沒有塊級作用域,,只有函式除外。
``` { var lut = 520; console.log(lut); // 520 } console.log(lut);
if(true){ var lut = 1314; } console.log(lut);
for(var i = 0;i < 5; i++){ var lut = 520; } console.log(lut); // 520
var i = 0; while (i < 5){ var lut = 1314; i++; } console.log(lut); // 1314 ```
4、隱式全域性變數
隱式全域性變數:宣告的變數沒有var,就叫隱式全域性變數。
``` function lut() {
date = 410;//是隱式全域性變數
}
lut();
console.log(date); // 410 函式執行結束還可以訪問 ```
注意:
1、全域性變數是不能被刪除的,隱式全域性變數是可以被刪除的
2、定義變數使用 var 是不會被刪除的,沒有var是可以刪除的
3、定義變數的時候儘量都使用 var
var luzp = 27;
lut = 23;
delete luzp; //把luzp刪除了
delete lut; //把lut刪除了
console.log(typeof luzp); // number 不能被刪除
console.log(luzp+10); // 37
console.log(typeof lut); // undefined 可被刪除