no-unneeded-ternary
禁止在存在更简单替代方案时使用三元运算符
🔧 可修复
此规则报告的一些问题可以通过 --fix
命令行 选项自动修复。
在 JavaScript 中,一个常见的错误是使用条件表达式在两个布尔值之间进行选择,而不是使用 ! 将测试转换为布尔值。以下是一些示例
// Bad
var isYes = answer === 1 ? true : false;
// Good
var isYes = answer === 1;
// Bad
var isNo = answer === 1 ? false : true;
// Good
var isNo = answer !== 1;
另一个常见的错误是使用单个变量作为条件测试和结果。在这种情况下,可以使用逻辑 OR
来提供相同的功能。以下是一个示例
// Bad
foo(bar ? bar : 1);
// Good
foo(bar || 1);
规则详情
此规则禁止在存在更简单替代方案时使用三元运算符。
此规则的错误代码示例
在 Playground 中打开
/*eslint no-unneeded-ternary: "error"*/
var a = ;
var a = ;
此规则的正确代码示例
在 Playground 中打开
/*eslint no-unneeded-ternary: "error"*/
var a = x === 2 ? "Yes" : "No";
var a = x !== false;
var a = x ? "Yes" : "No";
var a = x ? y : x;
f(x ? x : 1); // default assignment - would be disallowed if defaultAssignment option set to false. See option details below.
选项
此规则有一个对象选项
"defaultAssignment": true
(默认) 允许条件表达式作为默认赋值模式"defaultAssignment": false
禁止条件表达式作为默认赋值模式
defaultAssignment
当设置为 true
时(默认情况下为 true
),defaultAssignment 选项允许 x ? x : expr
形式的表达式(其中 x
是任何标识符,expr
是任何表达式)。
使用 { "defaultAssignment": false }
选项时,此规则的其他错误代码示例
在 Playground 中打开
/*eslint no-unneeded-ternary: ["error", { "defaultAssignment": false }]*/
var a = ;
f();
请注意,defaultAssignment: false
仍然允许 x ? expr : x
形式的表达式(其中标识符位于三元运算符的右侧)。
何时不使用它
如果您不关心条件表达式中不必要的复杂性,可以关闭此规则。
相关规则
版本
此规则在 ESLint v0.21.0 中引入。