Babel ES6指南说:
let是新的var。
显然,唯一的区别是var将作用域限定为当前函数,而let将作用域限定为当前块。这个答案有一些很好的例子 。
我看不出有任何理由var在ES6代码中使用。即使您希望将给定变量的作用域限定在整个函数中,也可以let通过将声明放在功能块的顶部来实现,这是您应该执行var的操作以指示实际作用域。而且,如果您想在某个for块或某个范围内更精细地确定范围,则也可以这样做。
所以我的直觉是var在编写ES6代码时完全停止使用。
我的问题是,我对此有误吗?有什么合理的情况比它var更可取let吗?
let在函数的顶部放置一条语句,那么我想将其范围限定到整个函数就很明显了。我认为使用var它不会比将其定位在顶部更清晰。
var仍然是向后兼容。如果不是那样的话,他们将完全删除var,或者一开始就不会引入let,而是将其语义更改为var应该一直存在的含义。
var对我来说似乎很渺茫,不足以保证会有第三种变量出现。您let只需将a放在整个函数的顶部即可将其作用于整个函数,这比var在块中写入要清晰得多(目的是将其从该块中吊起,以便可以在块外使用它) - 奇怪的)。他警告说,如果let将a 范围限定在一个函数上,那么“只是表示差异的位置,而不是语法”,但是我认为这是一件好事。
var。他提出的用于保持的示例var似乎是人为的-都是基于严重的编码错误。遇到错误并被迫修复此类错误比使用使人无法摆脱的语言功能要好得多!接下来,建议将所有内容包装在try / catch中,以防止崩溃?该链接的其余部分都很好,但是我完全不同意该部分。
var有意识地指出,此变量旨在作用于整个函数,这可能是一个有用的“自我记录”约定。