let用法
块级作用域,不存在变量声明提升,暂时性死区
typeof x; // ReferenceError
let x;
上面代码中,变量x使用let命令声明,所以在声明之前,都属于x的“死区”,只要用到该变量就会报错。因此,typeof运行时就会抛出一个ReferenceError。
作为比较,如果一个变量根本没有被声明,使用typeof反而不会报错。
typeof undeclared_variable // “undefined”
let不允许在相同作用域内,重复声明同一个变量。
因此,不能在函数内部重新声明参数
块级作用域
第四层作用域无法读取第五层作用域的内部变量。
内层作用域可以定义外层作用域的同名变量。
const声明常量,一旦声明变量,就必须立即初始化,不能留到以后赋值。
const的作用域与let命令相同:只在声明所在的块级作用域内有效
const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。
const声明的常量,也与let一样不可重复声明