一、var声明变量的特点
1.变量声明提前
console.log(a); //a值为undefined
var a = 1;
2.没有块级作用域
if(true) {
var b = 2;
}
console.log(b);//此时输出b,且值为2
3.可以重复声明变量
var c = 1;
var c = 2;
console.log(c);//能输出c,且值为2,没有报错
二、let命令
let用来声明变量,有3个特点
1.不存在变量提升
console.log(e);
let e = 1;
2.拥有块级作用域
let d = 1;
if(true) {
let d = 2;
}
console.log(d); //输出1
3.不允许重复声明
let f = 1;
let f = 2;
console.log(f);
三、const命令
const用来声明常量,拥有let的3个特点,还拥有以下特点:
1.一旦声明必须初始化
const g;
2.定义赋值后,不能再修改值
const h = 1;
h = 2;
本质:
const保证的是变量指向的那个内存地址所保存的数据不可改动。
const i = [1,2];
i.push(3);
console.log(i); //输出[1,2,3]
const i = [1,2];
i.push(3);
console.log(i);
i = [a, b, c]; //报错
console.log(i);
const foo = {};
foo.prop = 123;
console.log(foo); //输出{prop:123}
foo = {}; //报错