为什么jshint会抱怨表达式内的换行?

18

当将以下代码传递给jshint时,它认为if条件语句中的换行符不好,会提示"Bad line breaking before '&&'"。

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

然而,在"&&"之后换行是可以的。

if (1 == 1 && 
        true) {
    console.log("hello world");
}
为什么jshint认为前者是错误的,而后者是正确的?

3
可能是因为它太丑了 ;) - ThiefMaster
2个回答

14

但是如何知道哪些解析器可能会因此而出现问题(这个问题仍然存在)? - 2540625
抱歉,我不知道。也许Raynos可以回答(他也是这里的用户,也许你可以在JS聊天室找到他)。 - bfavaretto
1
JSHint选项列表可以在http://jshint.com/docs/options/找到,其中`laxbreak`显然已被弃用...无论如何,我现在仍在我的`Gruntfile.js`中使用它,因为在一行上阅读三元表达式很困难。 - Ian Campbell

3
JSHint的创建者可能不喜欢这种包装方式,并更喜欢第一行中更常见的&&

这种约定的主要原因是该运算符清楚地表明该行是前一行的延续。如果换行符前面有运算符,则很难注意到这一点。

实际上,Github上有一个与您询问的问题相关的问题:https://github.com/jshint/jshint/issues/557

7
这个引用不是说相反的吗?也就是说,&&\n是不好的,但\n&&可以接受? - bfavaretto
3
好的,我会尽力做到最好。这句话的意思是:“没错,同意。这正是我希望运算符在换行符之后的原因。” - chtenb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接