我正在使用 JSHint 对 JavaScript 进行 linting,并启用此选项
"asi": true,
"white": true
避免在我的代码中使用分号。
但是我必须用括号开始我的新行,所以我必须在该行的开头之前加上分号
;(function () {
})
JSHint 给我两个错误:
- “;”后缺少空格
- 如果我在“;”后面加一个空格我得到:预期“(”具有不同的标识
我注意到这样 JSHint 很高兴
;
(function () {
})
但我认为这不是一个好的解决方案。
有没有办法在不关闭 JSHint 或 white 选项的情况下解决这个问题?
最佳答案
JSHint 中的旧版 white: true
选项用于强制 Douglas Crockford 所提倡的编码风格。在他的原创中JSLint工具。没有分号的 JavaScript 代码不适合他的编码风格。如果您不想受限于他的风格指南,那么就不要使用 white: true
。
This list of JSHint options不显示任何参数来自定义它们强制执行的编码风格。
为了证明这个问题没有答案,我在 JSHint 源代码中找到了相关检查:
function nonadjacent(left, right) {
if (option.white) {
left = left || token;
right = right || nexttoken;
if (left.line === right.line && left.character === right.from) {
left.from += (left.character - left.from);
warning("Missing space after '{a}'.",
left, left.value);
}
}
}
唯一检查的配置选项是option.white
,因此不幸的是没有任何方法可以实现您想要的行为。如果您确实想要一个能够完全满足您要求的工具,您可以轻松 fork JSHint ,添加另一个选项,并在 nonadjacent
函数中检查它。
关于javascript - asi 模式下在括号前添加分号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11523633/