multiline-ternary
強制三元運算式運算元之間換行
🔧 可修正
此規則回報的某些問題可透過 --fix
命令列 選項自動修正
此規則在 ESLint v8.53.0 中已棄用。請使用 @stylistic/eslint-plugin-js
中的對應規則。
JavaScript 允許三元運算式的運算元以換行符號分隔,這可以提高程式碼的可讀性。
例如
var foo = bar > baz ? value1 : value2;
以上可以改寫成以下內容,以提高可讀性並更清楚地劃分運算元
var foo = bar > baz ?
value1 :
value2;
var foo = bar > baz
? value1
: value2;
規則詳細資訊
此規則強制或不允許三元運算式的運算元之間換行。注意:此規則不強制運算符的位置。如果您有興趣強制運算符本身的位置,請參閱 operator-linebreak 規則。
選項
此規則有一個字串選項
"always"
(預設)強制三元運算式的運算元之間換行。"always-multiline"
強制三元運算式的運算元之間換行,如果運算式跨越多行。"never"
不允許三元運算式的運算元之間換行。
always
這是預設選項。
此規則在 "always"
選項下不正確的程式碼範例
在 Playground 中開啟
/*eslint multiline-ternary: ["error", "always"]*/
? : value2;
? value :
value2;
foo > bar ?
: value2;
此規則在 "always"
選項下正確的程式碼範例
在 Playground 中開啟
/*eslint multiline-ternary: ["error", "always"]*/
foo > bar ?
value1 :
value2;
foo > bar ?
(baz > qux ?
value1 :
value2) :
value3;
foo > bar
? (baz > qux
? value1
: value2)
: value3;
always-multiline
此規則在 "always-multiline"
選項下不正確的程式碼範例
在 Playground 中開啟
/*eslint multiline-ternary: ["error", "always-multiline"]*/
? value1 :
value2;
foo > bar ?
: value2;
? : value2;
此規則在 "always-multiline"
選項下正確的程式碼範例
在 Playground 中開啟
/*eslint multiline-ternary: ["error", "always-multiline"]*/
foo > bar ? value1 : value2;
foo > bar ?
value1 :
value2;
foo > bar ?
(baz > qux ? value1 : value2) :
value3;
foo > bar ?
(baz > qux ?
value1 :
value2) :
value3;
foo > bar &&
bar > baz ?
value1 :
value2;
foo > bar
? baz > qux
? value1
: value2
: value3;
never
此規則在 "never"
選項下不正確的程式碼範例
在 Playground 中開啟
/*eslint multiline-ternary: ["error", "never"]*/
foo > bar ? :
value2;
?
value : value2;
?
:
value2;
此規則在 "never"
選項下正確的程式碼範例
在 Playground 中開啟
/*eslint multiline-ternary: ["error", "never"]*/
foo > bar ? value1 : value2;
foo > bar ? (baz > qux ? value1 : value2) : value3;
foo > bar ? (
baz > qux ? value1 : value2
) : value3;
何時不使用
如果您對於三元運算式的運算元是否應以換行符號分隔沒有任何嚴格的慣例,則可以安全地停用此規則。
相容性
- JSCS: requireMultiLineTernary
相關規則
版本
此規則是在 ESLint v3.1.0 中引入的。