Eslint
规则 | Rules

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中引入。

资源