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

时间:2013-01-08 11:40:30

标签: javascript jshint

当将以下代码传递给jshint时,它认为if条件中的换行符是坏的,说“在'&&'之前坏行断开。”

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

然而,在'&&'之后使用换行符很好。

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

为什么jshint认为第一个是错误的而后者是正确的?

2 个答案:

答案 0 :(得分:13)

根据a discussion on GitHub

  

这可能会导致半冒号插入和旧的javascript解析器崩溃等问题。请检查各种浏览器。

<击> This check can be disabled with laxbreak:true

laxbreak选项正在弃用,但我不确定默认的jshint行为是否会发生变化。

答案 1 :(得分:3)

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

  

这个约定背后的主要原因是运算符清楚地表明该行是前一行的延续。在断线前使用操作员,这很难发现。

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