区别
var 有全局作用域和函数作用域,没有块级作用域let 有全局作用域、函数作用域和块级作用域
var 可以在同一作用域下多次声明同一变量let 在同一作用域下同一变量只能声明一次
var 声明的变量可以在声明之前被调用(有声明提升)let 声明的变量不可以在声明之前被调用(没有声明提升)
代码演示
作用域
for (var i = 0; i < 10; i++) {
var a = 1;
}
console.log(i);
console.log(a);
function f(){
var b = 1;
}
f()
console.log(b);
for (let i = 0; i < 10; i++) {
let a = 1;
}
console.log(i);
console.log(a);
function f(){
let b = 1;
}
f()
console.log(b);
多次声明
var a = 1;
var a = 2;
console.log(a);
let a = 1;
let a = 2;
声明与调用
console.log(a);
var a = 1;
console.log(a);
let a = 1;
声明提升
if (false) {
var c = 2;
}
console.log(c);
声明提升后等价于
var c;
if (false) {
c = 2;
}
console.log(c);
|