简述ES var、let、const之间的区别?
参考答案:
ES6(ECMAScript 2015)引入了let
和const
作为新的变量声明关键字,与原有的var
关键字一起使用。这三个关键字在声明变量时有一些重要的区别:
- 作用域:
var
声明的变量具有函数作用域或全局作用域,而let
和const
声明的变量具有块级作用域。这意味着在if
语句、for
循环或任何{}
内部声明的变量,只在这些块内部可见。 - 重复声明:使用
var
可以多次声明同一个变量,但是使用let
和const
在同一个作用域内只能声明一次。 - 变量提升(Hoisting):
var
声明的变量会被提升到其所在作用域的顶部,即可以在声明之前访问到该变量,但此时变量的值为undefined
。而let
和const
声明的变量虽然也会被提升,但是不能在声明之前访问,否则会出现ReferenceError
错误。 - 暂时性死区(Temporal Dead Zone):
let
和const
声明的变量在声明之前的区域是不可访问的,这被称为暂时性死区。而var
声明的变量则没有这个问题。 - 赋值限制:
var
和let
声明的变量可以被重新赋值,但是const
声明的变量是常量,一旦被赋值后就不能再改变。
总的来说,var
、let
和const
之间的主要区别在于它们的作用域、重复声明、变量提升、暂时性死区和赋值限制。在编写ES6代码时,通常推荐使用let
和const
来声明变量,因为它们提供了更好的作用域控制和防止重复声明的功能。在需要声明常量时,应使用const
。