在JavaScript中是否有理由不将'var'替换为'let'?
用JavaScript向我的长辈提出一个问题:抛开这样一个事实,在我看来,在绝大多数情况下,没有理由使用在JavaScript中是否有理由不将'var'替换为'let'?,javascript,ecmascript-6,Javascript,Ecmascript 6,用JavaScript向我的长辈提出一个问题:抛开这样一个事实,在我看来,在绝大多数情况下,没有理由使用varoverlet。当然,如果您在if语句中定义了一个变量,这不是一回事,但是除了scope之外,还有其他原因可以使用一个变量而不是另一个吗 编辑:要清楚,这个问题是关于JavaScript中的最佳实践(即利弊),而不是关于var和let之间差异的性质 谢谢 不,我认为没有理由。从我所读到的内容来看,var保留在ES6中,以便向后兼容。我读过的大多数文章都建议用let逐步替换所有var事件。
var
overlet
。当然,如果您在if
语句中定义了一个变量,这不是一回事,但是除了scope之外,还有其他原因可以使用一个变量而不是另一个吗
编辑:要清楚,这个问题是关于JavaScript中的最佳实践(即利弊),而不是关于var
和let
之间差异的性质
谢谢 不,我认为没有理由。从我所读到的内容来看,
var
保留在ES6中,以便向后兼容。我读过的大多数文章都建议用let
逐步替换所有var
事件。当然,这应该考虑到差异,例如您在if
块中提到的差异。我现在只在ES6代码中使用let
。使用var
没有什么比让let
做得更好的了。如果需要整个函数范围,请在函数顶部创建let
我注意到有一个区别。在全局范围内定义变量时,定义为var
的变量可以通过window.variable
访问,而定义为let
的变量不能通过window
对象访问。但是使用正确编写的模块代码,不允许var
语句泄漏到窗口,因此这并不重要
我还建议使用const
而不是let
,用于变量引用(相对于原始变量的值)不会发生变异的情况。@jedi,不,这是一个不同的重复查找器,总是反应过度:D@estus我不同意“最佳实践”问题是基于观点的。堆栈溢出的病态之处在于,所有这些问题滥用者通常都过于直接地回答问题。“最佳实践”的意思是“赞成和反对”,但他们把它理解为“你的观点是什么”。“这里有许许多多的重大问题被这样滥用了。@daveslab,我能想到的唯一不改变一切的原因是暂时的死区。”@RoboRobok,我同意stackoverflow有很多问题,包括这个让我很恼火的问题。除此之外,我最近开始回答问题,最让人扫兴的是关于简单事物的答案得到3-5个喜欢,而当我花一个小时阅读OP的代码或详细解释一个概念时,最多只能从OP中得到一个喜欢