0

我正在使用 JSHint 对我的 JavaScript 进行 linting,并启用了此选项

"asi": true,
"white": true

避免在我的代码中使用分号。

但是我必须用括号开始我的新行,所以我必须在那个开始之前放一个分号

;(function () {

})

JSHint 给我两个错误:

  • ';' 后缺少空格
  • 如果我在 ';' 后面加一个空格 我得到:预期 '(' 有不同的标识

我注意到这样 JSHint 很高兴

;
(function () {

})

但我认为不是一个好的解决方案。

有没有办法在不关闭 JSHint 或white选项的情况下解决这个问题?

4

1 回答 1

3

JSHint 中的 legacywhite: true选项用于强制执行Douglas Crockford在其原始JSLint工具中提倡的编码风格。无分号的 JavaScript 代码不适合他的编码风格。如果您不想受限于他的风格指南,请不要使用white: true.

这个 JSHint 选项列表没有显示任何参数来自定义它们强制执行的编码样式。

为了证明这个问题没有答案,我去 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函数中检查它。

于 2012-07-17T13:57:04.767 回答