let 命令
let 申明的变量只在变量所在代码块内有效。
- 基本用法
|
|
- 不存在变量提升现象: 变量必须在声明后使用,typeof 操作不再安全
|
|
- 暂时性死区(temporal dead zone):作用域内绑定变量,不受外部的影响,在声明语句前不能使用
|
|
块级作用域
- ES6 允许块级作用域任意嵌套,外级作用域无法读取内层作用域的变量
|
|
|
|
- 函数本身的作用域在其所在所在的块级作用域之内1234567891011121314151617181920212223242526272829f(); // outer funfunction f() {console.log('first outer fun');}// cover, havent tempoly dead zonefunction f() {console.log('outer fun');}{f() // outer funif (false) {// 不会函数提升而覆盖外层函数值function f() {console.log('first inner fun');}}}{f(); // second inner funfunction f() {console.log('second inner fun');}}f(); // outer
const 命令
- const 命令用于声明常量,一旦申明,必须立即初始化,且不能再改变。
|
|
- const 同 let 只在声明所在的块级作用域内有效,不提升,存在暂时性死区,不重复
|
|
- const 命令对于复合性变量,只指向地址
|
|
全局对象的属性
- var, function 命令声明的全局变量依旧是全局对象的属性
|
|
- let, const 命令声明的全局变量不属于全局对象的属性
|
|