为什么ESLint Preferred-const希望将对象或数组定义为const?

时间:2018-12-07 11:14:04

标签: const eslint

以以下几行为例:

let c=[]
c[0]=23

以及这些:

let creationDate = new Date(date)
creationDate.setDate(creationDate.getDate() + daysTTL);

两个let语句都将引发ESLint错误

Identifier .... is never reassigned; use 'const' instead of 'let'.

是否有更好的方法指示ESLint我实际上正在更改值,或者该规则不适用于结构化数据/不适用于结构化数据?

还是我应该切换到const?

1 个答案:

答案 0 :(得分:0)

实际上,由ESLint引起的问题是由于差异很小,因此const用于从未使用=重新分配的变量,而let则用于将肯定重新分配的变量使用=

让我用您的两个例子来解释一下, 在第一个示例中,变量c未被重新分配,只是其元素的值已被更改或分配,因此不是在c上而是在其元素c[0]

关于第二个示例,您正在更改对象的属性值,但没有将该对象重新分配给另一个对象或新对象。

是否使用constlet取决于您是否将使用=重新分配。

希望这很有帮助