【问题标题】:Suppressing jshint "error"抑制 jshint “错误”
【发布时间】:2015-10-24 16:33:20
【问题描述】:

我有一个构造函数 X 来创建一个对象。稍后在文件中我通过X.prototype.method = function () {...} 添加多个方法。虽然我意识到这是一个赋值语句,但它看起来和行为就像一个不需要分号的函数声明。

gulp jshint 坚持认为缺少的分号是一个错误,它必须写成X.prototype.method = function () {...};。它会生成一个错误,而不是我可以使用 -W### 指令抑制的警告。

有没有办法抑制这个错误?我意识到这是一个笨蛋,我可以轻松地“修复”代码,但我更喜欢更简洁的风格。

【问题讨论】:

    标签: javascript gulp jshint


    【解决方案1】:

    请在您的代码中包含分号。他们的目的是结束一个声明。如果要将函数设置为变量,那就是语句。如果您要声明一个函数,它不是一个语句,因此没有分号。

    没有办法只在var = function() 语句上启用分号插入。您唯一能做的就是在整个文件上启用分号插入。将此注释放在脚本的顶部:

    /*jshint asi: true*/
    

    asi 代表允许插入分号。

    【讨论】:

    • 我接受这个,因为它以两种方式回答了我的问题。首先,没有办法按照 JSHint 的原样做我所要求的事情。其次,asi: true,给了我一个大锤的方法来得到我想要的东西。它做的比我想要的要多,但考虑到 JSHint 的工作原理,它仍然是可能的最佳答案。第一段没有必要——它重申了我已经在问题中提出的内容(另外还要求我包含分号,我显然不希望这样做)。
    【解决方案2】:

    JSHint 在这方面是正确的。您应该在赋值语句中添加一个尾随分号。然而,JavaScript 接受不带分号的代码。解决问题的一种方法是使用 asi 选项 (http://jshint.com/docs/options/#asi) 完全禁用分号检查。

    【讨论】:

    • 这是不正确的。在声明中不需要尾随分号,事实上,JSHint 并没有抱怨它。见ecma262-5.com/ELS5_HTML.htm#Section_13。所以function xyzzy() {...} 不需要分号,也不会生成错误消息。在我的情况下它是必需的,因为它不仅仅是一个函数声明,它是一个赋值语句,其中被分配的值是被声明的函数。
    • 是的,它只对分配有用。我写了声明而不是赋值。谢谢提示。
    猜你喜欢
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多