在JavaScript中使用let和var有什么区别?

92 阅读2分钟

什么时候应该使用let而不是var?为什么?让我们来了解一下

在现代的JavaScript中,我们有3种方法来声明一个变量并为其赋值。

  • const
  • let
  • var

在JavaScript中处理变量时,我总是默认使用const 。它保证了数值不能被重新分配,所以使用起来比较安全。

但是当我以后确实需要重新声明一个变量时,我总是使用let

我已经很多年没有使用过var ,对我来说,它只是为了向后兼容而存在的,当我看到它被使用时,我总是挑起眉毛。

为什么呢?

首先,let合理的范围

或多或少在所有流行的编程语言中使用的同样的范围,即块范围,决定了使用let 声明的变量是在最近的块范围内的。

var 相反,它有点奇怪,因为它有函数作用域,这意味着使用 声明的变量作用域是最近的函数。var

这有实际意义。例如,一个变量被声明在一个if 里面,或者被用作for 循环迭代器。使用let 使它成为这两个块的局部。而使用var ,则允许该变量在该块之外可用,这可能会导致错误。

总是使用给你最小权力的工具,以确保你对它有最大的控制。巨大的权力伴随着巨大的责任

偏爱let 的另一个原因是吊装。和const 一样,let 变量没有被提升,但它们在被评估时被初始化了。

var 相反的,变量被提升到了函数的顶端,因此它们甚至在其声明之前的行中都是可用的。很奇怪,对吗?

第三个原因:当你声明一个与已经存在的变量同名的let ,你会得到一个错误(在严格模式下)。

最后,还有一个很大的区别:如果你在任何函数之外声明一个var 变量,它就会被分配到全局对象上,也就是在浏览器中的windowlet 不以这种方式工作;该变量是可用的,但没有附加到全局对象上,因此它在文件之外是无法到达的。