eslint/no-constant-binary-expression 正确性
功能概述
禁止操作符本身不会影响结果的表达式
为什么会有问题?
始终求值为 true 或 false 的比较以及始终短路或从不短路的逻辑表达式 (||
、&&
、??
) 都可能是程序员错误的迹象。
这些错误在 operator precedence 易于错误判断的复杂表达式中尤其常见。
此外,此规则会检测对新创建对象/数组/函数/等的比较。在对象通过引用进行比较的 JavaScript 中,新创建的对象永远不能 ===
任何其他值。对于习惯了对象通过值进行比较的语言的程序员来说,这可能会让人感到意外。
示例
javascript
// One might think this would evaluate as `a + (b ?? c)`:
const x = a + b ?? c;
// But it actually evaluates as `(a + b) ?? c`. Since `a + b` can never be null,
// the `?? c` has no effect.
// Programmers coming from a language where objects are compared by value might expect this to work:
const isEmpty = x === [];
// However, this will always result in `isEmpty` being `false`.