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

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

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

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

我明白,这个错误可以使用laxbreak 选项进行configuration

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

这个解释是相当简洁的, 我很好奇为什么以这种方式破坏线路被认为是不好或松懈的。

请记住,我不是想在这里开始一场神圣的战争,我只是在寻找一个客观的答案,为什么JSHint人们认为这是不好的,是否只是他们注入到他们的棉绒风格偏好(我认为JSLint是有意识的棉绒),或者如果某些翻译人员在这种方式中出现问题,可能会出现问题。

这是一个风格指南,以避免可能会被假设有关自动分号插入的陈述。

这个想法是,你在行尾清楚地expression了这个expression式的结尾,还是可以在下一行继续。

Jshint不会把这个标记为坏的换行符,如果你在换行符之前使用+而不是在新行中。 像这样:

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

不是直接回答这个问题,但对于任何人想要保持规则,但修正警告,谷歌search(像我这样做),以下可能是有用的…

当使用Notepad ++(例如使用JSLint插件)时,可以使用以下search和replace来修复:

  • find: (\r\n|\n|\r)( *)\+
  • replace为: +$1$2 (包括第一个和最后一个空格)
  • search模式: 正则expression式

(只在Windows上testing过,但是正则expression式也可以在Unix或Mac OS系列的结尾使用。)

||做类似的事情 , &&==!=<=>=而不是+ ,使用这个:

  • find: (\r\n|\n|\r)( *)(\|\||&&|==|!=|<=|>=)
  • replace为: $3$1 $2 (包括第一个和最后一个空格)