multiline-ternary
强制三元表达式的操作数之间换行
🔧 可修复
此规则报告的一些问题可以通过 --fix
命令行 选项自动修复
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 中引入。