解释 JSHint 在“ +”错误之前坏线断开

谁能给我解释一下为什么 JSHint 抱怨下面这些,

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

带有错误 Bad line breaking before '+' error

我知道这个错误可以用 laxbreak 选择配置,它被描述为

此选项将取消大多数关于代码中可能存在不安全的换行的警告。它不会禁止显示关于逗号优先编码风格的警告。为了抑制那些你必须使用泻逗号(见下文)。

这个解释非常简洁,我很好奇,为什么这样打破界限被认为是不好的或松懈的第一位。

请记住,我并不是要在这里发动一场圣战,我只是在寻找一个客观的答案,为什么 JSHint 的人认为这是不好的,是否这只是一个风格偏好,他们正在注入到他们的 linter (我认为 JSLint 是固执己见的 linter) ,或者如果有什么可以错误的某些解释器时,行破坏这种方式。

40959 次浏览

这是一个样式指南,以避免使用 可以易于对 自动插入分号做出假设的语句。

其思想是,在一行的末尾清楚地表明表达式是在那里结束,还是可以在下一行继续。

这并不是对这个问题的直接回答,但是对于那些在 Google 上遇到这个问题的人(就像我一样) ,他们希望保留这个规则,但是修改警告,下面这些可能是有用的..。

当使用记事本 + + (例如使用 JSLint 插件)时,可以通过以下搜索和替换来修复:

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

(只在 Windows 上测试,但正则表达式也应该与 Unix 或 Mac OS 行结束符一起使用。)

要对 ||&&==!=<=>=而不是 +做类似的事情,使用以下方法:

  • 找到什么: (\r\n|\n|\r)( *)(\|\||&&|==|!=|<=|>=)
  • 替换为:  $3$1 $2  (包括第一个和最后一个空格)

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

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