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

Jam*_*hon 123 javascript jshint

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

window.location.href = String1
    + '#'
    + Sting2
    + '='
    + String3;
Run Code Online (Sandbox Code Playgroud)

有了这个错误, Bad line breaking before '+' error

我知道可以使用laxbreak 选项配置此错误,该选项被描述为

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

这个解释非常简洁,我很好奇为什么这种方式断线被认为是不好或者首先松懈.

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

Bar*_*ney 105

这是一种风格指南,可以避免可能会对自动分号插入进行假设的陈述.

这个想法是你在一行结束时清楚表达表达式是在那里结束还是在下一行继续.

  • 自动分号插入是强制执行此样式的合理理由.但是当表达式在某个括号内时,警告仍然存在.而且,这让我感到难过. (35认同)
  • 第二个@BenHyde,一般来说,当浏览代码来引导一行"+"时,它更具人性化.跟随左侧的单个列而不是跳到每一行的远端以查看它是否将被下一行附加在眼睛上更容易(并且更不容易出错).甚至语法也不那么笨重:"第118行追加117"而"第117行将附加第118行". (21认同)
  • 就个人而言,我讨厌将操作符(和逗号)附加到行尾,因为我浏览了它.我更容易在多行布尔语句中读取逻辑(在行的开头而不是在结尾处的&&或||),并且我可以快速地将逗号分隔的列表与其他多行语句区分开来,方法是使用逗号.感谢上帝为laxbreak (8认同)
  • 感谢您的回答,在错误背后有一个基本原理使我更容易证明进行更改以安抚JSHint. (6认同)
  • @Barney你如何调整自动分号插入的问题与答案[给出我非常相似的问题](http://stackoverflow.com/questions/24858171/)?这种格式的合理风险是什么?对我而言,它具有可扫描性的优势. (2认同)

asu*_*man 8

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

window.location.href = String1 +
'#' +
Sting2 +
'=' +
String3;
Run Code Online (Sandbox Code Playgroud)

  • 这甚至不能回答一个问题.为什么这么多的投票? (10认同)
  • 也许这是解决此问题的一种方法,无需更改jshint设置. (4认同)
  • 这应该是一个评论,因为它没有真正回答问题,但提供了有价值的信息. (4认同)