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"
选项时,此规则的 **错误** 代码示例
在代码沙盒中打开
/*eslint multiline-ternary: ["error", "always"]*/
? : value2;
? value :
value2;
foo > bar ?
: value2;
使用 "always"
选项时,此规则的 **正确** 代码示例
在代码沙盒中打开
/*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"
选项时,此规则的 **错误** 代码示例
在代码沙盒中打开
/*eslint multiline-ternary: ["error", "always-multiline"]*/
? value1 :
value2;
foo > bar ?
: value2;
? : value2;
使用 "always-multiline"
选项时,此规则的 **正确** 代码示例
在代码沙盒中打开
/*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"
选项时,此规则的 **错误** 代码示例
在代码沙盒中打开
/*eslint multiline-ternary: ["error", "never"]*/
foo > bar ? :
value2;
?
value : value2;
?
:
value2;
使用 "never"
选项时,此规则的 **正确** 代码示例
在代码沙盒中打开
/*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 中引入的。