如何在JSHint中启用不必要的分号警告?

时间:2017-01-16 04:00:11

标签: javascript jshint automatic-semicolon-insertion

现在,如果我有:

console.log;

我没有收到JSHint的警告。我想开始使用不必要地使用分号的标准,我很感激JSHint的一些帮助。是否有支持的方法来启用不必要的分号使用警告?

请参阅:https://www.codecademy.com/blog/78

它建议我使用JSLint,但是JSLint会强制使用我不想使用的标签空格。

2 个答案:

答案 0 :(得分:3)

如果您指的是所谓的“JavaScript标准风格”,那不是“新标准”,除非您的意思是公司采用的新标准,而不是行业标准。这只是一个人被误导的个人标准。

如果有的话,ES6引入了更多的理由,不要忽略分号:

a = b
[x, y] = [1, 2]

其中第二行是数组解构。

这将被解析为

a = b[x, y] = [1, 2]

这当然不是你想要的。 “标准”建议使用

a = b
;[x, y] = [1, 2]

这是我见过的最丑陋的事情之一。如果你必须加一个分号,为什么不把它放在它所属的上面的那一行?

以上是ASI失败的所有众所周知的案例,包括着名的

a = b
(function foo() { }())

将被解析为

a = b(function(foo() { }())

尝试将函数作为参数传递给函数b

在jshint中没有你想要的选项,因为没有必要。 “不需要的分号”不是一个需要被短号拾取的错误。

使用自定义linter支持破坏的“标准”似乎是一个可怕的想法。你会错过jshint和eslint这些明智使用过的短片中的所有创新。如果您的自定义linter仅在一个特定编辑器中工作,则更是如此。如果您团队中有人想要使用Sublime Text会怎么样?

我强烈建议重新审视你不明智的决定,不要用分号。在对github JS repos的调查中,使用这种方法的百分比是一位数。当你在它的时候,你也可以从标签移动到空格;同样的调查也表明,空间是绝对普遍的做法。

当然,以上都不是指真正不必要的分号,例如

a = b;;
function foo() { };

哪些 是不必要的,并且通常会选择一个linter。

答案 1 :(得分:1)

在阅读完所有选项之后,我找不到在JSHint中启用它的方法。

然后,在阅读了更多标准的JS之后,我真正想要的是它们,它们有自己的原子短信,这正是我所寻找的。

https://atom.io/packages/linter-js-standard