“Var” 和 “Let” 之间有什么区别?
变量
首先,我想谈谈JavaScript 作用域。
作用域决定了变量的可访问性。你不能在作用域之外访问变量。
在 ES6 之前的 Javascript 中,有两种类型的作用域:
- 全局范围
- 局部作用域(函数作用域)
全局范围
在块或函数之外声明的任何变量都在全局范围内。您可以从任何地方访问这些变量。
局部作用域(函数作用域)
顾名思义,在函数内部声明的变量具有局部作用域。它们只能在函数内部访问。
ES6 引入了Let和Const变量,它们的作用域可以限定在块内。所以现在又多了一种作用域类型。
块作用域
在 JavaScript 中,花括号会创建一个块。因此,如果你在块内使用Let或Const声明了一个变量,则无法在该块外部访问它。
变量
使用Var声明的变量具有函数作用域。您无法从函数外部访问此变量。但是,如果您在代码块内部使用Var声明变量,则可以从外部访问它。
与Var不同,Let具有块作用域。您只能在块内部访问这些变量。因此,如果您尝试从外部访问,则会引发引用错误。
您可以重新分配用Var声明的变量。
Var 声明 ( var a
) 每次出现时都会移至文件顶部。这被称为。有了它,你可以做类似这样的事情。(点击此处hoisting
了解更多信息)hoisting
使用let则不能这样做。它会给出一个错误: