no-unneeded-ternary
disallow ternary operators when simpler alternatives exist (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
var foo = bar ? bar : 1;
// Good
var foo = bar || 1;
规则细节
当存在更简单的选择时,此规则不允许三元运算符。
此规则的错误
代码示例:
/*eslint no-unneeded-ternary: "error"*/
var a = x === 2 ? true : false;
var a = x ? true : false;
此规则的正确
代码示例:
/*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;
var a = x ? x : 1;
选项
该规则有一个对象选项:
"defaultAssignment": true
(默认)允许条件表达式作为默认分配模式
"defaultAssignment": false
不允许将条件表达式作为默认的分配模式
defaultAssignment
此规则的附加错误
代码示例包含以下{ "defaultAssignment": false }
选项:
/*eslint no-unneeded-ternary: ["error", { "defaultAssignment": false }]*/
var a = x ? x : 1;
何时不使用它
如果您不关心条件表达式中不必要的复杂性,则可以关闭此规则。
相关规则
- no-ternary
- no-nested-ternary
版本
该规则在 ESLint 0.21.0中引入。