变量
let
用来声明变量的,不可以重复声明,可以重复的赋值。
const
用来声明常量的,常量称为只读数据。
一旦声明必须赋值,且值不可再改。
使用const声明的常量不可以重复声明更不可以重复的赋值。
var
用来声明变量的,可以重复的赋值,可以重复的声明。
相同点
都是声明的关键字
不同点
-
变量提升只有var
-
作用域:var声明的变量存在于window顶级对象中,let和const的变量存在于独立的块级作用域中。
-
let可以重复的赋值,const不可以重复赋值
es6的经典题:暂时性死区
原因就是let和const的块作用域的特性。
当let或const放在{}里的时候,这个{}就会变成块级作用域,被let或const声明的变量锁死--暂时性死区
在es5时代,作用域只有全局的window和局部的函数作用域,受条件限制,for循环,if和switch里的变量会污染全局,现在有了let和const之后,凡是有{}的代码块里面使用了let或const则{}就会变成块级作用域。
三者的使用场景
-
let适合在for循环中的定时器使用,作为强类型语法限制的变量。
-
const适合作为一次性赋值的常量,多用于数据的版本号或id。
-
var适合兼容老的ie浏览器,对于很旧的项目使用的比较多,目前推荐使用let替代。