2017-04-25 71 views
0

函数作用域对我来说是二十年来非常好的。现在我到处阅读,我应该使用letconst而不是var。我想这主要是因为它是一个新功能。为什么我应该喜欢块范围?为什么我应该使用块范围而不是函数范围?

+1

因为JS被批评很长一段时间没有尊重所有其他语言(至少是着名的)尊重块范围。现在,JS正在通过弥补很多空白来推进这些语言。 –

+2

你不应该,除非你有充分的理由这样做。继续使用* var *的一个很好的理由是它向后兼容。 * const *和* let *限制你的代码运行的环境只有很少的好处,你可以从* strict mode *(也是向后兼容的)中获得类似的好处。 – RobG

+0

你可以在这里阅读,为什么你应该使用let和const,它是关于“Variable hoisting” http://stackoverflow.com/questions/3725546/variable-hoisting –

回答

6

const有一个明显的优点,那就是它是一个不变的约束。 let有一个暂时死区,禁止在同一范围内重新标识一个标识符,所以它有助于防止某些错误。

除此之外,当您不需要块范围时继续使用var并没有什么错误。

+0

Const很好,但是可以导致一些有趣的错误...例如在初始化之前询问'typeof'块变量导致错误... – Akxe

+4

@Akxe:为什么要问这个类型如果变量不是初始化了吗?我认为给'let'个案引发的错误是一个特征。 –

+0

谢谢!我会保留'var',并且可以通过我的爱好项目练习'let'和'const'。 – inf3rno

相关问题