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 = ;
var a = ;
此規則的正確程式碼範例
在遊樂場中開啟
/*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 = ;
f();
請注意,defaultAssignment: false
仍然允許 x ? expr : x
形式的運算式 (其中識別符號位於三元運算符的右側)。
何時不應使用它
如果您不關心條件運算式中不必要的複雜性,可以關閉此規則。
相關規則
版本
此規則於 ESLint v0.21.0 中引入。