ES6 - let與const,解構賦值

貓董發表於2018-11-25

ES6定義

ECMA script2015以後的

let 與 const

var的缺陷

  1. 沒有塊級作用域,導致var在for/if內宣告的變數可以被全域性訪問;(ES6之前的解決辦法使用IIFE-立即執行函式)
  2. 變數提升,使程式碼不好理解。舉例:
var a = 1;
function show(){
    console.log(a);
    var a = 2;
}
show(); //結果是a undefined
複製程式碼

let的用法

  1. let宣告的變數有塊級作用域,只在作用域內有效;

注意:let const 在全域性宣告的變數並不指向window

  1. let宣告的變數沒有變數提升;在程式碼塊內,let宣告變數之前的區域(TDZ 暫時性死區)使用變數都會報錯, 必須先宣告在使用;
  2. let在同一個作用域內,不能重複定義變數,可以賦值;
  3. 對於for(){} 類似的結構來講,()內的程式碼塊可以看作{}程式碼塊的父級;

const的用法

  1. const塊級作用域和變數提升等方面與let一樣;
  2. const定義變數時,必須初始化賦值,不可以先宣告後賦值;
  3. const宣告的常量,不能重複賦值修改;
  4. 對於物件來說,由於賦值給const常量的是引用,所以可以直接對屬性進行修改,或者通過push的操作修改陣列;
  5. 如果想建立不能修改的物件可以使用Object.freeze;const obj1 = Object.freeze(obj);

變數解構賦值

  • 在資料交換,如AJAX,JSON資料的處理上非常有用。
    let json = {
        name: murphy,
        age: 18,
        job: coder
    }
    let {name, age=20, job:j} = json; //'='後面是預設值,':'後面是別名
    複製程式碼
  • 左右結構格式應該保持一致
  • 舉例: 簡化變數值的交換
    let a =12;
    let b = 5;
    [a,b] = [b,a];
    複製程式碼

相關文章