哈Ha! 我向您呈现
Dan Abramov的文章
“ On let vs const”的翻译。
我
以前的帖子包含以下段落:
let vs const vs var :通常,您需要的只是let 。 如果需要防止重写变量,则可以使用const 。 (有些人对此很腐,在只有一个变量赋值的情况下更喜欢使用const )。
事实证明这个说法很有争议,在Twitter'e和Reddit'e上立即开始对此进行激烈的讨论。 似乎最流行的观点(或至少是大多数人的语言表达)是,您应始终使用
const并仅在必要时引用
let ,这可以由ESLint的preferred
-const规则提供。
在这篇文章中,我将简要列出我遇到的所有利弊,并表达我对此事的个人见解。
为什么喜欢const
- 一个明确的规则:当您每次必须考虑使用const还是let更好时,这是大脑的额外负担。 “始终在工作的地方使用const ”规则使您从不必要的麻烦中解脱出来,并将此任务留给了短绒猫。
- 重新分配可能导致错误:在大型函数中,您可能没有注意到是否重新分配了变量,这可能是导致错误的原因。 特别是在封闭中。 const给您保证,您将始终看到相同的价值。
- 了解变异:刚开始学习JavaScript的人可能会误解const的原理,认为它可以防止变量的变异。 重要的是要了解对变量进行变异和对其进行重新分配之间的区别。 使用const会迫使您尽早理解和面对这种区别。
- 无意义的重新分配:有时重新分配变量根本没有意义。 例如,在React Hooks中,从钩子中获得的值(如useState)更像参数。 他们朝着同一方向前进。 如果看到他们的分配有误,您将更快地了解React数据流。
- 执行的优点:很少有人声称JavaScript引擎可以在使用const的情况下更快地执行代码,因为它知道不能覆盖变量。
为什么不喜欢const
- const失去了意义:如果我们在所有地方都使用const ,我们将失去理解是否重新分配某些内容是否重要的能力。
- 免疫的尴尬:在每一次讨论中,他们都说您应该始终使用const时 ,有些人对免疫问题感到困惑。 这并不奇怪,因为两个操作(声明和重新分配)都使用相同的“ =”运算符。 对此,他们通常会说您只需要“学习语言”。 但是,反驳的观点是,如果防止初学者错误的方法使这些初学者感到困惑,那么它就没有太大用处了。 而且,不幸的是,这无助于防止突变错误扩展到模块并影响一切。
- 避免过度声明的压力: “ const-first”方法的支持者迫使开发人员不要在条件中声明的变量中使用let 。 例如,你可以写
const a = cond ? b : c
而不是if条件,即使b和c分支(对象)都很复杂,并且很难给它们提供详细的名称。 - 重新分配不能成为错误的原因:当重新分配可能是错误的原因时,有三个主要组成部分:范围太大(作为模块化函数或大型函数),当值是参数时(因为不希望这与其他值相等)传递的内容),以及在嵌套函数中使用变量的时间。 但是,在许多情况下,大多数变量都不对应于这些情况中的任何一种,并且根本无法将参数指定为常量。
- 没有性能上的优势:我认为引擎已经被警告-即使使用var或let ,哪些变量也只声明一次。 如果我们继续认为const使代码更具生产力,那么我们也可以认为附加检查可以增加执行时间而不是减少执行时间。 认真地说,引擎更智能。
我的意见
我不在乎
我可以使用别人使用的任何规则。
如果您愿意,可以使用linter,它可以自动执行验证和更正,将
let更改为
const ,这样就不会在以后的代码审查中浪费您的时间。
最后,请记住,短绒棉被设计为使开发更容易。 如果有任何规则困扰您或您的团队,请将其删除。 这将是最好的。 从错误中学习。
链接到原始文章
-On let vs const 。