跳至內容

eslint/for-direction 正確性

此規則預設為開啟。
⚠️🛠️️ 此規則有危險的自動修正可用。

作用

禁止 for 迴圈更新導致計數器朝錯誤的方向移動。

為什麼這不好?

一個永遠無法到達停止條件的 for 迴圈,例如一個計數器朝錯誤方向移動的迴圈,將會無限期地執行。雖然有時無限迴圈是故意的,但習慣上會將這種迴圈建構成 while 迴圈。更典型的情況是,無限 for 迴圈是一個錯誤。

此規則禁止 for 迴圈中的計數器變數以永遠無法滿足停止條件的方式變更。例如,如果計數器變數正在增加(即 i++)並且停止條件測試計數器是否大於零(i >= 0),則迴圈將永遠不會退出。

範例

此規則的不正確程式碼範例

js
for (var i = 0; i < 10; i--) {}

for (var i = 10; i >= 0; i++) {}

for (var i = 0; i > 10; i++) {}

for (var i = 0; 10 > i; i--) {}

const n = -2;
for (let i = 0; i < 10; i += n) {}

此規則的正確程式碼範例

js
for (var i = 0; i < 10; i++) {}

for (var i = 0; 10 > i; i++) {
  // with counter "i" on the right
}

for (let i = 10; i >= 0; i += this.step) {
  // direction unknown
}

for (let i = MIN; i <= MAX; i -= 0) {
  // not increasing or decreasing
}

參考資料

在 MIT 許可證下發布。