quick-lint-js

Find bugs in JavaScript programs.

E0188: '=' changes variables; to compare, use '===' instead

In an if statement or a loop, it is likely a mistake to use = to compare a variable with a constant:

let headingLinks = [];
for (let el of document.querySelectorAll("a")) {
  if (el.parentNode.tag = "H1") {
    headingLinks.push(el);
  }
}

for (let x, i = 0; x = null; ++i) {
  if (xs[i] < 0) {
    break;
  } else if (xs[i] > 0) {
    x = xs[i];
  }
  out.push(x);
}

To fix this error, write === or == instead of = to compare for equality:

let headingLinks = [];
for (let el of document.querySelectorAll("a")) {
  if (el.parentNode.tag === "H1") {
    headingLinks.push(el);
  }
}

Alternatively, if assignment was intended, write parentheses around the assignment to suppress the warning:

for (let x, i = 0; (x = null); ++i) {
  if (xs[i] < 0) {
    break;
  } else if (xs[i] > 0) {
    x = xs[i];
  }
  out.push(x);
}

Introduced in quick-lint-js version 2.0.0.

Documentation for other errors