Eslint和Prettier并没有半规则会在下一行用parens换行时导致行执行



我目前在Prettier和ESLint中设置了nosemi规则。考虑以下内容。

let a = myArr.find(x => x.id === c.id)
let b = myArr2.find(x => x.id === c.id)
(a.id && a.id != b.id) && doStuff()

它试图将其作为一个函数来执行…

let b = myArr2.find(x => x.id === c.id)(a.id && a.id != b.id) && doStuff()

我可以简单地删除parens,但在某些情况下,我需要parens才能使下一行正常工作。

我也可以做一些类似if (a.id && a.id != b.id) doStuff()的事情,但在这一点上,我正在为样式更改代码。

有办法绕过这个吗?

您可以使用标准分号作为分隔符;

let a = [true].find(Boolean)
; (a || !a) && console.log('gotcha')

或者一个空的块语句{}

let a = [true].find(Boolean)
{}
(a || !a) && console.log('gotcha')

或者使用void运算符,它分隔行,但需要一个括号来执行第二部分。

let a = [true].find(Boolean)
void ((a || !a) && console.log('gotcha'))
console.log(a);

最新更新