Возьмите эти строки в качестве примеров:

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
koalaok 7 Дек 2018 в 14:14

1 ответ

Лучший ответ

На самом деле проблема, поднятая в ESLint, связана с небольшой разницей, при которой const используется для переменных, которые никогда не переназначаются с помощью =, а let для переменных, которые обязательно будут переназначены с помощью =.

Позвольте мне объяснить, используя ваши два примера, В первом примере переменная c не была переназначена, просто значение ее элемента было изменено или присвоено, поэтому переназначение было выполнено не для c, а для его элемента c[0]

Что касается второго примера, вы меняете значение свойства объекта, но не переназначаете этот объект другому или новому.

Использовать ли const или let, зависит от того, будете ли вы когда-либо переназначать с помощью =.

Надеюсь, это было полезно

1
Morhaf Shamia 7 Дек 2018 в 11:39