@putout/plugin-logical-expressions 
The logical NOT (
!
) operator takes truth to falsity and vice versa.(c) MDN
đPutout plugin adds ability to simplify logical expressions containing
comparisons which will always evaluate to true
or false
since it's likely indications of programmer error.
Complements @putout/plugin-apply-comparison-order
.
Install
npm i @putout/plugin-logical-expressions -D
Rules
- â convert-bitwise-to-logical;
- â remove-boolean;
- â remove-duplicates;
- â simplify;
Config
{
"rules": {
"logical-expressions/simplify": "on",
"logical-expressions/remove-boolean": "on",
"logical-expressions/remove-duplicates": "on",
"logical-expressions/convert-bitwise-to-logical": "on"
}
}
simplify
â Example of incorrect code
const is = !(options && !options.bidirectional);
if (!left.type === 'UnaryExpression') {}
const oneOf = a || a;
const same = a === a;
a() && b;
â Example of correct code
const is = !options || options.bidirectional;
if (left.type !== 'UnaryExpression') {}
const oneOf = a;
const same = true;
a();
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
remove-boolean
A boolean is a logical data type that can have only the values
true
orfalse
.(c) MDN
â Example of incorrect code
const t = true && false;
â Example of correct code
const t = false;
remove-duplicates
â Example of incorrect code
const t = a && b && a;
â Example of correct code
const t = a && b;
convert-bitwise-to-logical
The bitwise OR operator (
|
) returns a1
in each bit position for which the corresponding bits of either or both operands are1
s.The operands are converted to 32-bit integers and expressed by a series of bits (zeroes and ones).
(c) MDN
Convert bitwise
to logical
operator, when one of operands is not a number, since mostly likely it is an error.
â Example of incorrect code
a | !b;
if (!(a !== b))
fn();
â Example of correct code
a || !b;
if (a === b)
fn();
Comparison
Linter | Rule | Fix |
---|---|---|
đ Putout | logical-expressions |
â |
⣠ESLint | no-constant-binary-expression |
â |
License
MIT