no-unexpected-multiline

禁止混淆多行表达式

配置文件 中的 "extends": "eslint:recommended" 属性启用了该规则

由于自动分号插入 (ASI),分号在 JavaScript 中通常是可选的。您可以使用 semi 规则要求或禁止分号。

ASI 的规则相对简单:正如 Isaac Schlueter 曾经描述的那样,换行符总是结束一个语句,就像一个分号一样,除非满足以下条件之一:

  • 该语句有一个未闭合的括号、数组字面量或对象字面量,或者以某种不是结束语句的有效方式的其他方式结束。(例如,以 ., 结尾。)
  • 该行是 --++(在这种情况下,它将递减/递增下一个令牌。)
  • 它是 for()while()doif()else,没有 {
  • 下一行以 [(+*/-,. 或其他只能在单个表达式中的两个标记之间找到的二元运算符开头。

LZxs6c5WPJ0GlUSJEYGWeJpsedf1hNX3HK/kWWZS9QramaazSChFnyU6FbDunFLAEZyVV6LNtJRIIpDIDtrMxjEAqBosav/Ec+L9Bs86XyKmfTWaKy3KN27LDsd0wymvyJMFIDOXaT5UJXfncg7TJMS03bmw62eeZz5u/a52GOGL0lTFXTBnU7xw26Pmjc2/fUEoR85VWlStgeyh9cbTScRW7lC5jWDja6xfUc4SJ7U9f6oL7LTzdYPPgcidzZca7OBzUpi6F+Ov5+UcFhs4TqVcaNffEOkkB1yQnmomE4W2EGqqsCS12JPHo6QWWK3sVJeA9FyG4hQhUC0yKnUkilgw1qyJI3QlhIFRs+73Qv2VLXWK9YXHxIf2NP4Ynj4nUiqLlgUdk20LZqSNMpjyzg==

规则详情

FPAu1Gyddwm2lH16MAM1ThsW/qMU0Bed9m8X4leqwdMAXGqlFPktzVsNLftEXJMQ459/2O+UVNLtgCsf62DIYDTMTiYdGE0+I/fGyQ/4xFtHxSaZH3JRzvYMjstu6EtvHxp0Wck8swrsmN+iN132RQ==

GwS4EaSovppQ4mqJLqfbKzSYv3y9ds7cGwzaMFa/7z4C1gY8WlNlp/RO4mqG79th

/*eslint no-unexpected-multiline: "error"*/

var foo = bar
(1 || 2).baz();

var hello = 'world'
[1, 2, 3].forEach(addNumber);

let x = function() {}
`hello`

let x = function() {}
x
`hello`

let x = foo
/regex/g.test(bar)

tvK23x9kXaq858zZ8KSDe/grTZY5yefhuA6McIGYa61ulXJimhCmlRPtj/MyWaVD

/*eslint no-unexpected-multiline: "error"*/

var foo = bar;
(1 || 2).baz();

var foo = bar
;(1 || 2).baz()

var hello = 'world';
[1, 2, 3].forEach(addNumber);

var hello = 'world'
void [1, 2, 3].forEach(addNumber);

let x = function() {};
`hello`

let tag = function() {}
tag `hello`

何时不使用

Lp13j8eQYpPhcYMAnLS3614MNDQub4anlHWlstBRVbJkb0GADcK95GQA537ZHS9REiief+yKoksrB8YdXmIAQWQloz8HskXdP8RLdQ8l/fA=

P1tj4QyFBiw0SIepakLk40yoqT9t3TA64F5kAFKrIANjh6eogCLSlG77V4m4AjRXVaWF1Lh2d6+E5Q4kxwjqJWygSqcr7axt1ceo5bRwl/Zt4TVESne5TVpSyoVLUQk5nr6RpaOFM3sdZcRAQ1y/B5xWFShj6Hh97IT+nWWvBpA=