现在,如果我有:
console.log;
我没有收到来自 JSHint 的警告。我想开始使用不使用不必要分号的标准,我会感谢 JSHint 的一点帮助。是否有支持的方式来启用不必要的分号使用警告?
见:https ://www.codecademy.com/blog/78
它建议我改用 JSLint,但 JSLint 在我不想使用的制表符上强制使用空格。
现在,如果我有:
console.log;
我没有收到来自 JSHint 的警告。我想开始使用不使用不必要分号的标准,我会感谢 JSHint 的一点帮助。是否有支持的方式来启用不必要的分号使用警告?
见:https ://www.codecademy.com/blog/78
它建议我改用 JSLint,但 JSLint 在我不想使用的制表符上强制使用空格。
如果您指的是所谓的“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 拾取的错误。
使用自定义 linter 来支持损坏的“标准”似乎是一个可怕的想法。你会错过像 jshint 和 eslint 这样明智使用的 linter 中正在进行的所有创新。如果您的自定义 linter 仅在一个特定的编辑器中工作,则更是如此。如果你的团队中有人想使用 Sublime Text 怎么办?
我强烈建议您重新考虑不使用分号的不明智决定。在对 github JS repos 的调查中,使用这种方法的百分比是个位数。当您使用它时,您还可以从制表符移动到空格;同一项调查还表明,空间是压倒性的普遍做法。
当然,以上都不是指真正不必要的分号,例如
a = b;;
function foo() { };
这是不必要的,通常会捡起棉绒。
阅读所有选项后,我找不到在 JSHint 中启用此功能的方法。
然后,在阅读了我真正想要的standardJS之后,他们有自己的原子linter,这正是我正在寻找的。