javascript - asi 模式下在括号前添加分号

标签 javascript jshint automatic-semicolon-insertion

我正在使用 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/

相关文章:

javascript - DS.FixtureAdapter 丢失带有 hasMany 异步属性的夹具数据

javascript - 如何阻止框架破坏程序破坏 WordPress 定制器页面?

javascript - 咕噜声 : how to generate jshint output as HTML

angularjs - Angular 应用程序的最大圈复杂度

javascript - 为什么我的所有源 js 文件中都省略了分号?

javascript - JavaScript 自动分号插入(ASI)的规则是什么?

用于 do-while 语句的 Javascript 自动分号插入

javascript - HTML、Javascript 和 HTML 中嵌入的 Javascript 中的非标准标签

javascript - 如何区分自动滑动和点击滑动Bootstrap轮播?

jslint - 实用且广泛认可的jshint设置