解释JSHint在'+'错误之前的坏行

时间:2013-02-28 16:33:13

标签: javascript jshint

有人可以向我解释为什么JSHint抱怨以下内容,

window.location.href = String1
    + '#'
    + Sting2
    + '='
    + String3;

出现错误Bad line breaking before '+' error

我了解可以使用laxbreak option配置此错误,该错误描述为

  

此选项可以抑制代码中可能存在不安全断行的大多数警告。它不会抑制有关逗号优先编码风格的警告。要压制那些你必须使用laxcomma(见下文)。

这个解释非常简洁,而且我很好奇为什么这样断线会被认为是不好或者首先松懈。

请记住,我并不想在这里开始一场神圣的战争,我只是在寻找一个客观的答案,解释为什么JSHint人认为这很糟糕,是否只是一种风格偏好,他们注入了他们的l((I)以为JSLint是自以为是的短信),或者当某些口译人员以这种方式打破时,某些口译员会出现问题。

3 个答案:

答案 0 :(得分:104)

这是一种风格指南,可以避免可以automatic semicolon insertion做出假设的陈述。

这个想法是你在行的末尾清楚表达表达式是在那里结束还是在下一行继续。

答案 1 :(得分:9)

如果在换行符之前使用+而不是换行符,则Jshint不会将此标记为坏换行符。像这样:

window.location.href = String1 +
'#' +
Sting2 +
'=' +
String3;

答案 2 :(得分:3)

不是问题的直接答案,但是对于任何想要保留规则但要修正警告的谷歌搜索(如我所做)的人,以下内容可能会有用...... < / p>

使用Notepad ++(例如使用JSLint插件)时,可以使用以下搜索&amp;替换:

  • 查找内容: (\r\n|\n|\r)( *)\+
  • 替换为:  +$1$2  (包括第一个和最后一个空格)
  • 搜索模式:正则表达式

(仅在Windows上测试过,但正则表达式也适用于Unix或Mac OS行结尾。)

||&&==!=<=>=代替{{1}执行类似操作使用这个:

  • 查找内容: +
  • 替换为: (\r\n|\n|\r)( *)(\|\||&&|==|!=|<=|>=) (包括第一个和最后一个空格)