Skip to content

var、let和const的区别

🕒 Published at:
  1. 这个三个都是JS中变量声明的关键字,var是ES5的语法,let和const是ES6的语法,一般情况下let和const可以代替var用来声明变量,应尽量避免直接使用var声明变量,因为使用var有很多缺陷
  2. var可以重复声明变量,这这在大型项目中是很不好的,容易产生难以察觉的bug
  3. var声明的变量如果是在浏览器端运行的话,默认会挂载在window对象下面,这样也是不好的,容易造成全局变量的污染
  4. var是可以在声明之前使用,返回结果为undefined
  5. var在for循环中的累计变量i也会造成全局变量的污染,而且在一些闭包的问题上会违反直觉的,比如使用var声明累计变量,for循环给li绑定事件,然后点击li输出i的值。
  6. 像let和const就可以很好的解决var以上提到的所有问题,let和const是不能重复声明变量,let和const声明的变量在浏览器端运行,是不会挂载在window对象下面的,而是在一个块级作用域里,let和const也不可以在声明之前使用,因为有暂时性死区TDZ
  7. let和const在for循环中存在父子作用域
  8. let和const也有一点小的区别,const的语义是声明常量,所以它声明的变量必须初始化,而且是不能对变量重新赋值的,const本质上是锁定了声明量的地址,使其变得不可修改,但如果是像对象这样的引用数据类型,它里面的值还是可以修改的