在ES6 之前, JavaScript中有三種作用域:
1. 全局作用域
2. 函數作用域
3. eval作用域
以上作用域內聲明的變量或方法只在當前作用域內有效, 在其他作用域內引用則會返回 undefined;
而ES6則新增了一個作用域: 塊級作用域
塊級作用域可以簡單理解為是: 包在大括號{}里面的內容, 它可以自成一個作用域, 但ES5中也有大括號, 可ES5中並沒有塊級作用域, 這時該怎樣判斷 {} 是否具有塊級作用域的特點?
這時就得用到 let 和 const
因此, 可以將塊級作用域理解為: 使用let和const聲明的變量, 只在當前大闊號內生效, 由此構建出了 塊級作用域 這么個東西.
這里的 "大括號內" 主要指的下面幾種情況:
// 條件語句 if () {} // switch語句 switch () {} // for / while循環語句 for () {} while () {} // try...catch語句 try () catch (err) {} // 單大括號 {}
注意: 對象的大括號內不是一個塊級作用域, 因為它里面不能直接聲明變量;