18

当将以下代码传递给 jshint 时,它认为 if 条件中的换行符不好,说“Bad line breaks before '&&'”。

if (1 == 1 
        && true) {
    console.log("hello world");
}

但是,在 '&&' 之后有换行符是可以的。

if (1 == 1 && 
        true) {
    console.log("hello world");
}

为什么 jshint 认为前者是错误的,后者是正确的?

4

2 回答 2

14

根据GitHub 上的讨论

这可能会导致分号插入和旧的 javascript 解析器中断等问题。请检查各种浏览器。

可以使用 禁用此检查laxbreak:true

laxbreak选项即将弃用,但我不确定默认的 jshint 行为是否会改变。

于 2013-01-08T12:13:00.363 回答
3

JSHint 的创建者可能不喜欢这种包装,而是更喜欢&&第一行中的,这似乎更常见:

这个约定背后的主要理由是操作员清楚地表明该行是前一行的延续。对于换行之前的操作员,这很难发现。

实际上有一个关于你在 Github 上问的问题:https ://github.com/jshint/jshint/issues/557

于 2013-01-08T11:44:56.150 回答