一.var 的特点
-
.var 声明的变量会挂在到window上,而且letconst声明的变量不会
var a = 100
let b = 200
const c = 300
console.log('a', window.a);
console.log('b', window.b);
console.log('c', window.c);
-
.2.var 声明变量存在变量提升,let和const不存在变量提升
console.log(a);
var a = 100
console.log(b);
let b = 200
console.log(c);
const c = 300
-
.3.let 和 const 会形成块级作用域
if (true) {
var a = 100
let b = 200
const c = 300
}
console.log(a);
console.log(b);
console.log(c);
-
.4.同一作用域下let和const不能声明变量,但var可以
var a = 100
var a = 200
console.log(a);//输出200
let b = 100
let b = 200
console.log(b);//报错
const c = 100
const c = 200
console.log(c);//报错
-
.5.暂时性死区
var a = 100
if (true) {
a = 10
//在当前块作用域中存在a使用let/const声明的情况下,
// 给a赋值10时,只会在当前作用域找变量a,
// 而这时,还未到声明时候,所以控制台Error:a
let a = 1
}
二.const 的特点
1、一旦声明必须赋值
// 一旦声明必须赋值
var a;//可以
let b;//可以
const c;//不可以
2、声明后不能再修改
var可以 let也可以 但是const却不可以
const a = 100
a = 200
3、如果声明的是复合类型数据,可以修改其属性
const list = []
list[0] = 100
console.log(list);
list[0] = 300
console.log(list);