Skip to content

noUselessTernary (since v1.5.0)

Diagnostic Category: lint/complexity/noUselessTernary

Sources:

Disallow ternary operators when simpler alternatives exist.

It’s a common mistake in JavaScript to use a conditional expression to select between two boolean values instead of using the logical NOT (!) or double NOT (!!) to convert the test to a boolean.

var a = x ? true : true;
complexity/noUselessTernary.js:1:9 lint/complexity/noUselessTernary  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━

   Unnecessary use of boolean literals in conditional expression.
  
  > 1 │ var a = x ? true : true;
           ^^^^^^^^^^^^^^^
    2 │ 
  
   Simplify your code by directly assigning the result without using a ternary operator.
  
   If your goal is negation, you may use the logical NOT (!) or double NOT (!!) operator for clearer and concise code.
     Check for more details about NOT operator.
  
   Unsafe fix: Remove the conditional expression with
  
    1 │ var·a·=·x·?·true·:·true;
          -----------     
var a = foo === 1 ? false : true;
complexity/noUselessTernary.js:1:9 lint/complexity/noUselessTernary  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━

   Unnecessary use of boolean literals in conditional expression.
  
  > 1 │ var a = foo === 1 ? false : true;
           ^^^^^^^^^^^^^^^^^^^^^^^^
    2 │ 
  
   Simplify your code by directly assigning the result without using a ternary operator.
  
   If your goal is negation, you may use the logical NOT (!) or double NOT (!!) operator for clearer and concise code.
     Check for more details about NOT operator.
  
   Unsafe fix: Remove the conditional expression with
  
    1  - var·a·=·foo·===·1·?·false·:·true;
      1+ var·a·=·foo·!==1;
    2 2  
  
var a = foo + 1 ? false : true;
complexity/noUselessTernary.js:1:9 lint/complexity/noUselessTernary  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━

   Unnecessary use of boolean literals in conditional expression.
  
  > 1 │ var a = foo + 1 ? false : true;
           ^^^^^^^^^^^^^^^^^^^^^^
    2 │ 
  
   Simplify your code by directly assigning the result without using a ternary operator.
  
   If your goal is negation, you may use the logical NOT (!) or double NOT (!!) operator for clearer and concise code.
     Check for more details about NOT operator.
  
   Unsafe fix: Remove the conditional expression with
  
    1  - var·a·=·foo·+·1·?·false·:·true;
      1+ var·a·=·!(foo·+·1·);
    2 2  
  
var a = foo + 1 ? true : false;
complexity/noUselessTernary.js:1:9 lint/complexity/noUselessTernary  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━

   Unnecessary use of boolean literals in conditional expression.
  
  > 1 │ var a = foo + 1 ? true : false;
           ^^^^^^^^^^^^^^^^^^^^^^
    2 │ 
  
   Simplify your code by directly assigning the result without using a ternary operator.
  
   If your goal is negation, you may use the logical NOT (!) or double NOT (!!) operator for clearer and concise code.
     Check for more details about NOT operator.
  
   Unsafe fix: Remove the conditional expression with
  
    1  - var·a·=·foo·+·1·?·true·:·false;
      1+ var·a·=·!!(foo·+·1·);
    2 2  
  
var a = x === 2 ? 'Yes' : 'No';
var a = x === 2 ? 'Yes' : false;

Logical NOT: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_NOT