let 和 const 命令

1、letjavascript

1.相似var, 但在let命令所在的代碼塊內有效。java

2.不存在變量提高。(必須先聲明才能使用不然報錯)es6

3.暫時性死區。(只要塊級做用域內存在let命令,它所聲明的變量就「綁定」(binding)這個區域,再也不受外部的影響。防止變量泄露)瀏覽器

4.不容許重複聲明。函數

 

2、塊級做用域與函數聲明this

1.考慮到環境致使的行爲差別太大,應該避免在塊級做用域內聲明函數。若是確實須要,也應該寫成函數表達式,而不是函數聲明語句。spa

// 塊級做用域內部的函數聲明語句,建議不要使用
{
  let a = 'secret';
  function f() {
    return a;
  }
}

// 塊級做用域內部,優先使用函數表達式
{
  let a = 'secret';
  let f = function () {
    return a;
  };
}

2.ES6 的塊級做用域必須有大括號code

 

3、const 命令對象

1.聲明一個只讀的常量。一旦聲明,常量的值就不能改變。ip

2.只在聲明所在的塊級做用域內有效。

3.一樣存在暫時性死區。

5.不可重複聲明。

6.擴展: 可使用 Object.freeze (待補充)方法凍結

 

4、ES6 聲明變量的六種方法

ES5 只有兩種聲明變量的方法:var命令和function命令。ES6 除了添加letconst命令,後面章節還會提到,

另外兩種聲明變量的方法:import命令和class命令(待補充)。因此,ES6 一共有 6 種聲明變量的方法。

 

5、頂層對象的屬性

頂層對象,在瀏覽器環境指的是window對象,在 Node 指的是global對象。

1.ES5 之中,頂層對象的屬性與全局變量是等價的。

2.ES6var命令和function命令聲明的全局變量,依舊是頂層對象的屬性;let命令、const命令、class命令聲明的全局變量,不屬於頂層對象的屬性。

var a = 1;
// 若是在 Node 的 REPL 環境,能夠寫成 global.a
// 或者採用通用方法,寫成 this.a
window.a // 1

let b = 1;
window.b // undefined

 

原文地址

相關文章
相關標籤/搜索