本文翻译自WESBOS的一篇文章
我们应该用什么?
我们已经从ES6规范里学习了 let 和 const 关键字 - 它们是做什么的和它们的作用范围。我们还知道了什么时候它们可以或不可以被重新指定(再赋值),但是还有一个问题:我们到底应该怎么用它们呢?
现在在社区里这个问题已经是一个热门话题里,因为有些同学倾向于继续用 var, 而有些朋友说:”var以及死了!”.一些人说“用 let.”,而另一些人则用 const.
var死了吗?
var并没有死,它还是有这属于它特性的作用,它是以函数为作用域的,你可以重新指派或者是重新绑定它. 你仍然可以继续使用它, 这个问题并没有 正确 的答案,只是不同人有不同的想法,参考他们的想法并作出你自己的决定.
下面我要列出两个典型的意见. 它们都是由在Javascript领域里有丰富的经验和独到的见解的同学发表的,
参考一下:
第一个意见是Mathia Bynens发表的,他说:”const 不是关于immutability(不可变性)”
注:immutabiliy变量中你可以改变其属性,它只是不能被重指定
在他的文章中他关于 let vs. const的意见是:
- 默认用 const
- 如果需要重新指定值那么用 let
- var在ES6中不应该再用了
当你创建一个变量时, 假定它是 const 的,如果你需要更新这个值那么就使用 let.
另一个比较流行的意见是来自于Kyle Simpson的,他写过一些Javascript系列的好书.
- 如果需要在大的范围内(如函数范围)共享这个变量,那么用 var.
- 如果是小范围内的本地变量可以用 let.
- 重构 let 到 const 当你很确定这个值不会被重新制定.
他说, 用 var 是为了在一个大的范围共享这个变量,如果在一个小一点儿的范围那么用 let, 如果你一开始给变量指定成 const, 当你在之后发觉你必须要更新这个值的时候,你还必须得退回原处用 let 代替 const. 如果你一开始就用 let, 以后发觉不需要更新想重构成 const 也非常方便.
总结
两个意见都很有理有据, 你可以按照自己的意愿选择适合情景的方式, 但是看过ES6官方文档后,我决定采用Mathia Bynens的方案, 完全的远离 var😄.