E0190: missing comparison; '===' does not extend to the right side of '||'
In English, we might say “if the selection is ‘agree’ or ‘strongly agree’, return a rating of 1”. If this English phrase is translated naïvely into JavaScript, the code will behave as if every selection has a rating of 1:
This happens because if (selection === "agree" || "strongly agree")
is
interpreted as if ((selection === "agree") || "strongly agree")
, i.e. “if
selection is ‘agree’, or if ‘strongly agree’ is truthy, then …”. Because the
string "strongly agree"
is not empty, it is truthy, and the condition is
always true.
To fix this error, write the ==
or ===
comparison on both sides of ||
:
Note: As of quick-lint-js version 2.11.0, this diagnostic treats undefined
as
a constant. If you declare your own variable named undefined
, E0190
might be
incorrectly reported. To work around this issue, rename your variable to
something other than undefined
, such as isUndefined
.
Introduced in quick-lint-js version 2.0.0.