什么时候应该使用let而不是var?为什么?让我们来了解一下
在现代的JavaScript中,我们有3种方法来声明一个变量并为其赋值。
constletvar
在JavaScript中处理变量时,我总是默认使用const 。它保证了数值不能被重新分配,所以使用起来比较安全。
但是当我以后确实需要重新声明一个变量时,我总是使用let 。
我已经很多年没有使用过var ,对我来说,它只是为了向后兼容而存在的,当我看到它被使用时,我总是挑起眉毛。
为什么呢?
首先,let 有合理的范围。
或多或少在所有流行的编程语言中使用的同样的范围,即块范围,决定了使用let 声明的变量是在最近的块范围内的。
var 相反,它有点奇怪,因为它有函数作用域,这意味着使用 声明的变量作用域是最近的函数。var
这有实际意义。例如,一个变量被声明在一个if 里面,或者被用作for 循环迭代器。使用let 使它成为这两个块的局部。而使用var ,则允许该变量在该块之外可用,这可能会导致错误。
总是使用给你最小权力的工具,以确保你对它有最大的控制。巨大的权力伴随着巨大的责任。
偏爱let 的另一个原因是吊装。和const 一样,let 变量没有被提升,但它们在被评估时被初始化了。
var 相反的,变量被提升到了函数的顶端,因此它们甚至在其声明之前的行中都是可用的。很奇怪,对吗?
第三个原因:当你声明一个与已经存在的变量同名的let ,你会得到一个错误(在严格模式下)。
最后,还有一个很大的区别:如果你在任何函数之外声明一个var 变量,它就会被分配到全局对象上,也就是在浏览器中的window 。let 不以这种方式工作;该变量是可用的,但没有附加到全局对象上,因此它在文件之外是无法到达的。