1.let命令
ES6 新增了let
命令,用来声明变量。它的用法类似于var
,但是所声明的变量,只在let
命令所在的代码块内有效。
{
var a = 1
let b = 2
}
a // 1
b // b is not defind
var
命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined
。let
命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。
console.log(foo); // 输出undefined
var foo = 2;
console.log(bar); // 报错ReferenceError
let bar = 2;
只要块级作用域内存在let
命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
var tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError
let tmp;
}