版本

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

資源

變更語言