1.let和var的区别
(1)var会存在变量提升的现象,let所声明的变量一定要在声明后使用,否则报错。
(2)let声明的变量只在它所在的代码块有效。var可以在代码块外进行调用。
代码如下:
{
var c = 1;
let g = 2;
console.log(g);//返回2
}
console.log(c);//返回1
console.log(b);//报错
var b = 1;
let a = 3;
console.log(a);//返回3
//块级作用域
var dates = new Date();
function f() {
console.log(dates);
if(false) {
var dates = "hello";
}
}
console.log(f()); //报错
function f1() {
let n = 5;
if(true) {
let n = 10;
}
console.log(n); // 5
}
(3)for循环存在父子作用域
for循环计数器:
代码中,变量i是let声明的,当前的i只在本轮