ES6复习——let命令、const命令
六种变量声明方法:var function let const import class
let命令
注意点:
•声明的变量,只在let命令所在的{代码块}内有效
•不存在变量提升
变量只能在声明后使用,否则报错(暂时性死区)
•不允许重复声明
易错案例:
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};}
a[6](); // 10
上面代码中,变量i是var命令声明的,在全局范围内都有效,所以全局只有一个变量i。每一次循环,变量i的值都会发生改变,而循环内被赋给数组a的函数内部的console.log(i),里面的i指向的就是全局的i。也就是说,所有数组a的成员里面的i,指向的都是同一个i,导致运行时输出的是最后一轮的i的值,也就是 10。
var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};}
a[6](); // 6
上面代码中,变量i是let声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是6。for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。
const命令
声明一个只读的常量。一旦声明,常量的值就不能改变。
注意点:
•不能重复声明,也不能重新赋值
•声明的同时要赋值
•变量和值存储机制和数组对象一样