初探ES6

k-ch發表於2018-04-09

1、let宣告的變數,只在let命令所在的程式碼塊中有效(類似閉包,是塊級作用域);

2、for迴圈在設定迴圈變數的那部分是一個父作用域,而迴圈體內部是一個單獨的子作用域:

  例:for (let i = 0; i < 3; i++) {

      let i = `abc`;

      console.log(i);

     } // abc // abc // abc 輸出3次abc,表明兩個i不在同一個作用域中;

3、暫時性死區問題;

4、let 不允許重複宣告,不允許在函式內部重新宣告引數:

  function fun(arg){

    let arg; // 報錯

  }

5、const宣告只讀常亮(必須初始化),作用域與let命令相同;

6、const宣告的變數,儲存的不是變數的值,而是變數的地址:

  const foo = {};

  foo.prop=”name”; //新增一個屬性且複製  可以成功

  foo = {}; //相當於重新賦值,報錯 TypeError: "foo" is read-only

  陣列同理,如果真的想將物件凍結,應該使用Object.freeze方法 

  const foo = Object.freeze({});