1. var
-
var 定义的变量可以修改,如果不初始化会输出undefined,不会报错; -
在相同作用域里,可以重复声明同一个变量; -
声明的变量会存在变量提升;
2. let
-
let是块级作用域,函数内部使用let 定义后,对函数外部无影响; -
在相同作用域里,不可以重复声明同一个变量; -
声明的变量不会存在变量提升; -
“暂时性死区”,在代码块内,使用let 命令声明变量(或者const 声明常量)之前,该变量(常量)都是不可用的。
3.const
-
const 定义的变量不可修改,而且必须初始化,不能用null 占位; -
在相同作用域里,不可以重复声明同一个变量; -
声明的变量不会存在变量提升; -
声明的是复杂类型数据,可以修改属性;
var a1
console.log(a1) // undefined
console.log()
// 在相同作用域里
{
var b1 = 1
var b1 = 2 // 可以重复声明变量
console.log(b1) // 2
// let b2 = 21
// let b2 = 22 // 报错
// const b3 = 31
// const b3 = 32 // 报错
}
console.log(b1) // 2
// console.log(a2)// “暂时性死区”,在代码块内,使用let命令声明变量(或者const声明常量)之前,
let a2
console.log(a2)// undefined
// console.log(a3)// “暂时性死区”,在代码块内,使用let命令声明变量(或者const声明常量)之前,
const a3 = 31
// const a3
// console.log(a3)// 初始化必须声明,不然会报错
|