ES6_let、const變數

ES6的變異

總體而言,使用 let 與 const 的變數宣告方式,相較於 var 會更為嚴謹,因此建議在開發 ES6 之後的專案,使用let 與 const 作為變數宣吿,除了讓專案更穩定之外,也可以增加程式碼的可讀性。

以下三點解釋:

  • 區塊限制使用
  • 變數「不」提升(hositing)
  • 不允許重複宣告

案例1:let與const是用來宣告區塊裡的變數

*區塊是指程式碼{}的部分。

1
2
3
4
5
6

<script>
if(2>1){
let a =3
}
</script>
案例2:比較let與Var的差異
1
2
3
4
5
6
7
8
9
10

var a = 3;
var a = 5;

//結果會等於5

let a = 3;
let a = 5;

//結果顯示錯誤,因重複宣告變數
  • var變數會向上提升,如果沒有命名變數也會顯示undefined,而let與const則不會
  • 同個區塊不可重複命名
  • 常數const: 裝入東西(值)之後就上鎖的盒子,之後不可以再更動裡面的值,const 是唯獨變數,不能被修改,當重要檔案不能被變更如url網址,就適合使用唯獨變數。但如果是在陣列[]或者物件{}內仍可以被變更
  • 變數let: 暫時存放值的盒子,盒子是打開的,可以更動裡面的值

let與var的作用域:

作用域不一樣,var的作用域在函數 (function) 裡,let的作用域則是在區塊 (block) 裡。

全域變數:

在函式作用域(function scope)之外宣告的變數,全域變數在整個程式中都可以被存取與修改。

區域變數:

在函式作用域(function scope)內宣告,每次執行函式時,就會建立區域變數再予以摧毀,而且函式之外的所有程式碼都不能存取這個變數。

使用var宣告變數,可用範圍以function為界,function外讀不到值,但如使用區塊語句像if, else, for, while等等區塊語句時,宣告的區域變數仍然可在整段程式碼做存取,這並不是我們希望的結果,這時候就會建議使用let宣告。