let 与 var 的区别
var做的声明在全局里都有效 例如:
for(var i=0;i<3;i++){
var a= 1;
}
console.log(a); //1
在for循环里 变量a泄漏到了全局 但是我们用let 来申声明
for(var i=0;i<3;i++){
let a= 1;
}
console.log(a); //报错 a is not defined
用let声明的变量只在声明的那个函数作用域里有用
let声明之前声明的变量都不可用状态,这个被称为"暂时性死区"
let 与const 不存在变量提升
// console.log(a); Cannot access ‘a‘ before initialization
let a
let不允许在同一个作用域重复声明
// 报错
function () {
let a = 10;
var a = 1;
}
// 报错
function () {
let a = 10;
let a = 1;
}
const 是申明一个常量并且被声明的常量不可更改;
例如 : const a = 0;
a = 1 // 报错 Assignment to constant variable.
但是 const a = {
x:0
}
可以操作 a.x = 1;
console.log(a); //{x:1}
但是不可操作
a = {
x:1
}
// 报错 Assignment to constant variable.
并且const声明必须马上赋值
const的作用域与let相同都只作用于声明的函数内
原文:https://www.cnblogs.com/oneworld/p/10841671.html