Skip to content

noUselessTernary

诊断类别:lint/complexity/noUselessTernary

¥Diagnostic Category: lint/complexity/noUselessTernary

自从:v1.5.0

¥Since: v1.5.0

来源:

¥Sources:

当存在更简单的替代方案时,禁止使用三元运算符。

¥Disallow ternary operators when simpler alternatives exist.

在 JavaScript 中,使用条件表达式在两个布尔值之间进行选择,而不是使用逻辑非(!)或双非(!!)将测试转换为布尔值,这是一个常见的错误。

¥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.

¥Examples

¥Invalid

var a = x ? true : true;
code-block.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;
code-block.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;
code-block.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;
code-block.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

¥Valid

var a = x === 2 ? 'Yes' : 'No';
var a = x === 2 ? 'Yes' : false;

¥Resources

逻辑错误:https://web.nodejs.cn/en-US/docs/Web/JavaScript/Reference/Operators/Logical_NOT

¥Logical NOT: https://web.nodejs.cn/en-US/docs/Web/JavaScript/Reference/Operators/Logical_NOT

¥Related links