---
url: /docs/guide/usage/linter/rules/eslint/no-useless-assignment.md
---

### 它的作用

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

### 这为什么不好？

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

### 示例

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

```js
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"; // 在下一次循环中使用
  }
}
```

## 如何使用

## 版本

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

## 参考资料
