Skip to content
← Back to rules

eslint/no-useless-assignment Nursery

它的作用

标记那些新赋值的值之后从未被读取的赋值(“死存储”)。这有助于发现无用的工作或意外的错误。

这为什么不好?

死存储会增加噪音,并且可能掩盖真正的 bug(例如,你本来想使用那个值,或者写到了错误的变量上)。移除它们可以提升清晰度和性能。

示例

以下是此规则的错误代码示例:

js
/* eslint no-useless-assignment: "error" */

function fn1() {
  let v = "used";
  doSomething(v);
  v = "unused"; // 已赋值但从未被读取
}

function fn2() {
  let v = "used";
  if (condition) {
    v = "unused"; // 提前返回;这次写入从未被观察到
    return;
  }
  doSomething(v);
}

function fn3() {
  let v = "used";
  if (condition) {
    doSomething(v);
  } else {
    v = "unused"; // 该分支中后续未使用该值
  }
}

以下是此规则的正确代码示例:

js
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";
  for (let i = 0; i < 10; i++) {
    doSomething(v);
    v = "used in next iteration"; // 在下一次循环中使用
  }
}

如何使用

To enable this rule using the config file or in the CLI, you can use:

json
{
  "rules": {
    "no-useless-assignment": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  rules: {
    "no-useless-assignment": "error",
  },
});
bash
oxlint --deny no-useless-assignment

版本

此规则是在 v1.59.0 中添加的。

参考资料