跳到主要内容

简述ES var、let、const之间的区别?

参考答案:

ES6(ECMAScript 2015)引入了letconst作为新的变量声明关键字,与原有的var关键字一起使用。这三个关键字在声明变量时有一些重要的区别:

  1. 作用域var声明的变量具有函数作用域或全局作用域,而letconst声明的变量具有块级作用域。这意味着在if语句、for循环或任何{}内部声明的变量,只在这些块内部可见。
  2. 重复声明:使用var可以多次声明同一个变量,但是使用letconst在同一个作用域内只能声明一次。
  3. 变量提升(Hoisting)var声明的变量会被提升到其所在作用域的顶部,即可以在声明之前访问到该变量,但此时变量的值为undefined。而letconst声明的变量虽然也会被提升,但是不能在声明之前访问,否则会出现ReferenceError错误。
  4. 暂时性死区(Temporal Dead Zone)letconst声明的变量在声明之前的区域是不可访问的,这被称为暂时性死区。而var声明的变量则没有这个问题。
  5. 赋值限制varlet声明的变量可以被重新赋值,但是const声明的变量是常量,一旦被赋值后就不能再改变。

总的来说,varletconst之间的主要区别在于它们的作用域、重复声明、变量提升、暂时性死区和赋值限制。在编写ES6代码时,通常推荐使用letconst来声明变量,因为它们提供了更好的作用域控制和防止重复声明的功能。在需要声明常量时,应使用const