版本

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);

規則詳情

當存在更簡單的替代方案時,此規則不允許使用三元運算符。

此規則的不正確程式碼範例

在遊樂場中開啟
/*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;

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 時 (預設情況下),defaultAssignment 選項允許 x ? x : expr 形式的運算式 (其中 x 是任何識別符號,而 expr 是任何運算式)。

在啟用 { "defaultAssignment": false } 選項下,此規則的其他不正確程式碼範例

在遊樂場中開啟
/*eslint no-unneeded-ternary: ["error", { "defaultAssignment": false }]*/

var a = x ? x : 1;

f(x ? x : 1);

請注意,defaultAssignment: false 仍然允許 x ? expr : x 形式的運算式 (其中識別符號位於三元運算符的右側)。

何時不應使用它

如果您不關心條件運算式中不必要的複雜性,可以關閉此規則。

版本

此規則於 ESLint v0.21.0 中引入。

資源

變更語言