The logical NOT (
!
) operator takes truth to falsity and vice versa.(c) MDN
true
or false
since it's likely indications of programmer error.
Complements @putout/plugin-apply-comparison-order
.
Merged to @putout/plugin-logical-expressions.
Install
npm i @putout/plugin-simplify-logical-expressions -D
Rule
{
"rules": {
"simplify-logical-expressions": "on"
}
}
❌ Example of incorrect code
const is = !(options && !options.bidirectional);
if (!left.type === 'UnaryExpression');
const oneOf = a || a;
const same = a === a;
✅ Example of correct code
const is = !options || options.bidirectional;
if (left.type !== 'UnaryExpression');
const oneOf = a;
const same = true;
The rule also simplify duplication use:
-if (a && b || a && c) {
+if (a && (b || c)) {
}
Wrong cases with instanceof
:
-!a instanceof b;
-a instanceof !b;
-!a instanceof !b;
+!(a instanceof b);
Wrong cases with in
:
-!a in b;
-a in !b;
+!(a in b);
In case of duplicates:
-a && b && a
+a && b
Comparison
Linter | Rule | Fix |
---|---|---|
simplify-logical-expressions |
||
⏣ ESLint | no-constant-binary-expression |
License
MIT