JavaScript 的變數的全域性作用域、區域性作用域、塊級作用域理解

語言: CN / TW / HK

這是我參與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 可被刪除