在括号前将分号置于asi模式

时间:2012-07-17 13:32:25

标签: javascript jshint automatic-semicolon-insertion

我正在使用JSHint绘制我的JavaScript,并启用此选项

"asi": true,
"white": true

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

但我必须用支架开始我的新系列,所以我必须在开始之前加上分号

;(function () {

})

JSHint给了我两个错误:

  • 在';'
  • 之后缺少空格
  • 如果我在';'后放一个空格我得到:预期'('具有不同的身份

我注意到这样JSHint很高兴

;
(function () {

})

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

有没有办法解决这个问题,而无需关闭JSHint或白色选项?

1 个答案:

答案 0 :(得分:3)

JSHint中的遗留white: true选项用于强制道格拉斯克罗克福德在其原始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,所以遗憾的是无法实现您想要的行为。如果你真的想要一个能够完全符合你想要的工具,你可以轻松地分叉jshint并添加另一个选项并在nonadjacent函数中进行检查。