 
            no-useless-assignment
当值未使用时禁用变量赋值
在计算机编程中,一个被赋值但未被任何后续指令读取的局部变量被称为 dead store。
“Dead store” 浪费处理能力和内存,因此最好删除对变量的不必要赋值。
此外,如果作者打算使用该变量,则 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 中引入。
延伸阅读
