Skip to content
← Back to rules

eslint/no-unmodified-loop-condition Suspicious

What it does ​

Disallow references in loop conditions that are never modified within the loop.

Why is this bad? ​

A loop condition that depends on values that never change within the loop body can cause infinite loops or logic bugs.

Examples ​

Examples of incorrect code for this rule:

js
let done = false;
while (!done) {
  work();
}

Examples of correct code for this rule:

js
let done = false;
while (!done) {
  done = checkDone();
}

Configuration ​

This rule accepts a configuration object with the following properties:

checkConditionalExpressions ​

type: boolean

default: false

Whether references in each branch of a conditional expression should be checked independently instead of checking the result of the entire expression.

How to use ​

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

json
{
  "rules": {
    "no-unmodified-loop-condition": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  rules: {
    "no-unmodified-loop-condition": "error",
  },
});
bash
oxlint --deny no-unmodified-loop-condition

Version ​

This rule was added in v1.48.0.

References ​