在JavaScript中,使用var而不是let的原因有哪些?

16
使用 JavaScript ES6 中的新关键字 let 来声明变量,我再也想不出使用 var 的好理由了。到目前为止,我一直在这样做,而且我没有看到始终使用 let 有任何不利之处。
今天使用 var 的好理由是什么?今天始终使用 let 是一个好习惯吗?

2
这个问题在这里已经得到了解答。 - txtechhelp
1
谢谢。我之前已经阅读了这个问题(不过并没有全部看完)。虽然相似,但它不能明确地表明是否应该始终使用let - guagay_wk
1
答案对 letvar 进行了技术分析,如果有意义,我会使用 var,就像在第二个关于闭包的答案中使用 let 一样。因此,在你的问题之外,没有明确的答案,只有技术细节和你自己的想法(例如,一个观点)。这就像问在 C 中使用 signed vs. int 是否有意义(从技术上讲,它们做相同的事情,但这是关于功能和可读性的)。 - txtechhelp
感谢您的评论。我想到目前为止,我还没有遇到过var更合适的情况。我一直在使用let。这就是为什么我问这个问题,想知道我错过了什么。 - guagay_wk
除了作用域之外,我能想到的唯一有意义的事情就是地址空间/速度。如果您对所有变量使用 let,则可能无法考虑到浏览器 JavaScript 引擎通过内存和速度来寻址该变量所需的情况。对于较小的函数或脚本,这可能根本不重要(很可能是大多数情况)。但是对于一个大型网站,它大量使用 JS(或任何服务器端 JS),这可能会产生影响...您必须进行测试以验证这对您的东西是否适用。 - txtechhelp
显示剩余2条评论
1个回答

9

在使用varlet时,除了作用域之外,我认为没有明显的优势。可能有一个原因是为了支持旧版本浏览器(如果您不打算使用ES6到ES5编译器,如Babel)。


1
我确实同意,如果你总是使用let而不是var,那么代码会变得更简单,但是在赋值之前typeof却会给出引用错误,这让我很烦。 - João Marcos Gris
2
是的,这是由于暂时性死区导致的。它发生是为了使其类似于 const 的工作方式。 - Divyanshu Maithani
1
谢谢你提供有关TDZ的指针。我发现这篇文章非常有帮助!文章链接 - João Marcos Gris
1
不客气。这是一篇很棒的文章。我之前也写过关于TDZ的内容 :) 链接 - Divyanshu Maithani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接