1. var let const作用域
var是函数作用域 (function scoped);
let和const是块级作用域(block scoped);
var
if (~) {
var a = 1;
}
console.log(a);//能获取到
const
if (~) {
const a = 1;
}
console.log(a);//获取不到
let
if (~) {
let a = 1;
}
console.log(a);//获取不到
2. 是否可以重复定义
var可以重新定义,但是很容易全局污染
let不要在同一作用域,重新定义
const改变会报错,但是可以改变对象的属性
3. let和const的理解
for (let i = 0; i < 10; i++) {
console.log(i);
setTimeout(function () {
console.log(`i=${i}`);
}, 1000)
}
结果2次0~9
for (var i = 0; i < 10; i++) {
console.log(i);
setTimeout(function () {
console.log(`i=${i}`);
}, 1000)
}
结果一次0~9 一次8个10
##