版本

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"]*/

foo > bar ? value1 : value2;

foo > bar ? value :
    value2;

foo > bar ?
    value : 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"]*/

foo > bar ? value1 :
    value2;

foo > bar ?
    value1 : value2;

foo > bar &&
    bar > baz ? value1 : 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 ? value :
    value2;

foo > bar ?
    value : value2;

foo >
    bar ?
    value1 :
    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;

何時不使用

如果您對於三元運算式的運算元是否應以換行符號分隔沒有任何嚴格的慣例,則可以安全地停用此規則。

相容性

版本

此規則是在 ESLint v3.1.0 中引入的。

資源

變更語言