1、var声明变量存在变量提升,let和const不存在变量提升
console.log(a); // undefined ===> a已声明还但是没赋值,默认得到undefined值
var a = 10;
console.log(b); // 报错:b is not defined ===> 找不到b这个变量
let b = 10;
console.log(c); // 报错:c is not defined ===> 找不到c这个变量
const c = 10;
2、let、const都是块级局部变量
就是只在当前代码块起作用
{
let a = 1
}
console.log(a) // undefined
1)声明时候必须赋值 不然会报错;
const a;
控制台会报错
//SyntaxError: Missing initializer in const declaration
2)只能进行一次赋值,即声明后不能再修改;
const a=1
a=2
控制台会报错
//Assignment to constant variable
3)如果声明的是复合类型数据,可以修改其属性;
**3、同一作用域下let和const不能声明同名变量,而var可以
**
const a =2
const a=1
控制台会报错
//Uncaught SyntaxError: Identifier 'aa' has already been declared