【问题标题】:Eslint and Prettier no semi rule causes line execution when next line is wrapped in parens当下一行用括号包裹时,Eslint 和 Prettier 没有半规则会导致行执行
【发布时间】:2019-05-01 17:46:50
【问题描述】:

我目前在 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()

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

我也可以执行if (a.id && a.id != b.id) doStuff() 之类的操作,但此时我正在更改样式代码。

有什么办法吗?

【问题讨论】:

    标签: javascript eslint prettier


    【解决方案1】:

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

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

    或空块语句{}

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-03-20
      • 2018-10-29
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 2020-08-04
      • 2021-07-04
      • 2018-09-18
      • 2019-10-15
      相关资源
      最近更新 更多