бесполезное присваивание
Запретить присваивание переменных, когда значение не используется
Википедия описывает «мертвое хранилище» следующим образом:
В программировании на компьютере локальная переменная, которой присвоено значение, но которая не считывается никакой последующей инструкцией, называется мертвым хранилищем.
«Мертвые хранилища» тратят ресурсы обработки и памяти, поэтому лучше удалить ненужные присваивания переменным.
Также, если автор намеревался использовать переменную, вероятно, есть ошибка, связанная с мертвым хранилищем. Например,
- вы должны были использовать сохраненное значение, но забыли это сделать.
- вы допустили ошибку в имени переменной для хранения.
let id = "x1234"; // this is a "dead store" - this value ("x1234") is never read
id = generateId();
doSomethingWith(id);
Подробности правила
Это правило предназначено для сообщения о присваивании переменных, когда значение не используется.
Примеры неправильного кода для этого правила:
/* eslint no-useless-assignment: "error" */
function fn1() {
let v = 'used';
doSomething(v);
= 'unused';
}
function fn2() {
let v = 'used';
if (condition) {
= 'unused';
return
}
doSomething(v);
}
function fn3() {
let v = 'used';
if (condition) {
doSomething(v);
} else {
= 'unused';
}
}
function fn4() {
let = 'unused';
if (condition) {
v = 'used';
doSomething(v);
return
}
}
function fn5() {
let v = 'used';
if (condition) {
let v = 'used';
console.log(v);
= 'unused';
}
console.log(v);
}
Примеры правильного кода для этого правила:
/* eslint no-useless-assignment: "error" */
function fn1() {
let v = 'used';
doSomething(v);
v = 'used-2';
doSomething(v);
}
function fn2() {
let v = 'used';
if (condition) {
v = 'used-2';
doSomething(v);
return
}
doSomething(v);
}
function fn3() {
let v = 'used';
if (condition) {
doSomething(v);
} else {
v = 'used-2';
doSomething(v);
}
}
function fn4() {
let v = 'used';
for (let i = 0; i < 10; i++) {
doSomething(v);
v = 'used in next iteration';
}
}
Это правило не будет сообщать о переменных, которые никогда не читаются. Потому что это явно неиспользуемая переменная. Если вы хотите, чтобы оно сообщалось, включите правило no-unused-vars.
/* eslint no-useless-assignment: "error" */
function fn() {
let v = 'unused';
v = 'unused-2'
doSomething();
}
Когда не следует его использовать
Если вы не хотите получать уведомления о значениях, которые никогда не читаются, вы можете безопасно отключить это правило.
Связанные правила
Версия
Это правило было введено в ESLint v9.0.0-alpha.1.
Дополнительные материалы для чтения
Источники
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-useless-assignment