一、相同点
三者都可以声明变量
var a = 10;
let b = 20;
const c = 30;
console.log(a, b, c);
二、不同点
let关键字声明变量
1.不存在变量提升
2.不允许重复声明
3.块级作用域 花括号括起来里面let声明的变量
4.暂时性死区:块级作用域中已经声明了,变量就睡绑定在这个区域
// console.log(a1);//报错
let a1 = 2222;
let a2 = 2444;
//var a2 = 33333;//报错
{
//在块级作用域声明的变量只能在声明内部使用
let a3 = 66666;
console.log(a3);//66666
}
// console.log(a3);//报错
const关键字声明变量
1.不存在变量提升
// console.log(a1);//报错,在初始化之前不能使用变量
const a1 = 2312;
2.不允许重复声明
const a2 = 2123123;
//var a2 = 1111;//报错 a2 已经被声明
//let a2 = 1111;//报错 a2 已经被声明
3.声明了变量必须赋值 变量必须初始化
// const a3 ;//报错
4.const声明的变量存在块级作用域
{
const a5 = 23422;
}
// console.log(a5);//报错
5.暂时性死区
const a6 = 23222;
{
// console.log(a6);//报错
const a6 = 'heloos';
}
6.常量的值一旦确定就不能修
const a7 = 10;
// a7 = 20 ;//报错