ES6引入let关键字,在JS中var 与let都是用来声明变量,var没有块级作用域,let有。let因为有了块级作用域,还会带来其他的不同
1 关于块级作用域
对于var
var a = 0;
{
var a = 1;
}
console.log(a);//1
对于let
let a = 0;
{
let a = 1;
}
console.log(a); // 0
2 重定义同名变量
var
var b = 1;
var b = 2;
console.log(b); //2
var b = 1;
{
var b = 2;
}
console.log(b); // 2
let
let b =1;
let b = 2; //报错Identifier 'b' has already been declared
let b = 1;
{
let b = 2;
}
console.log(b); //1
3 变量提升
var a = 1;
function foo() {
console.log(a); // undefined
var a = 2;
}
foo();
如果是let则抛异常。 a is not defined
网友评论