
no-useless-assignment
禁止在值未使用時進行變數賦值
在電腦程式設計中,一個被賦予值但後續指令未讀取的區域變數被稱為dead store。
「Dead stores」浪費處理效能和記憶體,因此最好移除不必要的變數賦值。
此外,如果作者打算使用該變數,則 dead store 周圍可能存在錯誤。例如,
- 您應該使用儲存的值,但忘記這樣做。
- 您在要儲存的變數名稱中犯了錯誤。
let id = "x1234"; // this is a "dead store" - this value ("x1234") is never read
id = generateId();
doSomethingWith(id);
規則詳情
此規則旨在報告在值未使用時的變數賦值。
此規則的錯誤程式碼範例
在 Playground 中開啟
/* 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);
}
此規則的正確程式碼範例
在 Playground 中開啟
/* 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 規則。
在 Playground 中開啟
/* eslint no-useless-assignment: "error" */
function fn() {
let v = 'unused';
v = 'unused-2'
doSomething();
}
何時不該使用
如果您不希望收到從未讀取的值的通知,您可以安全地停用此規則。
相關規則
版本
此規則在 ESLint v9.0.0-alpha.1 中引入。
延伸閱讀
