let 以及 const

es6 相關知識點

 let 以及 const

let命令javascript

  • let 聲明的變量只在它所在的代碼塊有效。java

    //let 聲明 只在當前做用域有效
    var a = [];
    for (let i = 0; i < 10; i++) {
      a[i] = function () {
        console.log(i);
      };
    }
    a[6](); // 6
    
    //var 聲明 在全局做用域有效
    var a = [];
    for (var i = 0; i < 10; i++) {
      a[i] = function () {
        console.log(i);
      };
    }
    a[6](); // 10
  • let 不存在變量提高,在let聲明以前使用變量,會報錯ReferenceErrores6

    // var 的狀況
    console.log(foo); // 輸出undefined
    var foo = 2;
    
    // let 的狀況
    console.log(bar); // 報錯ReferenceError
    let bar = 2;
  • let 不容許重複聲明數組

    // 報錯
    function () {
      let a = 10;
      var a = 1;
    }
    
    // 報錯
    function () {
      let a = 10;
      let a = 1;
    }

不能在函數內部從新聲明參數數據結構

function func(arg) {
  let arg; // 報錯
}

function func(arg) {
  {
    let arg; // 不報錯
  }
}

const 命令函數

  • 一旦聲明,常量的值就不改變,只在聲明所在的塊級做用域有效。
  • const 命令聲明的常量也是不提高,一樣存在暫時性死區。
  • 本質: const 實際上保證的,不是變量的值不能改動,而是變量指向的那個內存地址不得改動。對於簡單的數據(數值、字符串、布爾值),值就保存在變量指向的那個內存地址,所以等同於常量。但對於複合類型(引用類型)的數據(主要是對象和數組),變量指向的內存地址,保存的只是一個指針, const 只能保證這個指針是固定的,至於它指向的數據結構是否是可變的,不能控制。
相關文章
相關標籤/搜索