var、let、const的区别与使用
var
-
var在任意版本都可以使用,const、let只能在ES6及之后使用
-
使用var操作符定义的变量会成为包含它函数的局部变量,作用域在函数内部
-
在函数内部定义变量时,忽略var,直接赋值,该变量会成为全局变量
-
在全局作用域中声明变量,称为全局变量,会成为window对象的属性
-
在一条语句中需要定义多个变量时,使用逗号分隔变量
-
var声明的变量可以变量提升,就是将变量声明提到其作用域的顶部
let
- let声明的范围是块作用域{},var声明的范围是函数作用域
- 块作用域是函数作用域的子集
- 所以适用于var的作用域限制同样适用于let
- let不允许同一块内出现冗余声明
- let声明的变量不能在作用域中被提升,不能在声明之前以任何形式引用该变量,称为暂时性死区
- 在全局作用域中声明let变量,不会成为window对象的属性
const
- 声明变量时必须初始化变量
- 尝试修改const声明的变量会导致运行时错误
- 不允许重复声明
- 作用域为块{}
- const声明的限制只适用于它指向的变量的引用,而不在意引用内部是否发生变化