Explanation of JSHint's Bad line breaking before '+&

Explanation of JSHint's Bad line breaking before '+' error

本文关键字:breaking before line Bad of Explanation JSHint      更新时间:2023-09-26

谁能给我解释一下为什么JSHint会抱怨以下内容,

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

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

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

此选项将抑制大多数关于代码中可能不安全的断行的警告。它不会屏蔽有关逗号优先编码风格的警告。要抑制这些,你必须使用逗号(见下文)。

这个解释很简洁,而且我很好奇为什么这样换行首先被认为是不好的或宽松的

请记住,我不是想在这里开始一场战争,我只是在寻找一个客观的答案,为什么JSHint的人认为这是不好的,是否只是一种风格偏好,他们注入到他们的linter(我认为JSLint是固执己见的linter),或者如果有什么东西可能会出错,某些解释器当换行时,这种方式

这是一个风格指南,用于避免可能容易产生自动分号插入的假设。

这样做的目的是为了在行尾明确表达式是否在此结束,或者是否可以在下一行继续。

Jshint不会将此标记为错误的换行符,如果您在换行符之前而不是在新行中使用+。像这样:

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

不是对这个问题的直接回答,但是对于那些希望保留规则但修复警告的人(像我一样),以下可能是有用的…

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

  • 查找目录: ('r'n|'n|'r)( *)'+
  • 替换为:  +$1$2  (包括首、尾空格)
  • 搜索方式:正则表达式

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

要为||, &&, ==, !=, <=>=而不是+做类似的事情,使用以下命令:

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