【问题标题】:Why does JSLint give strict violation error on this function?为什么 JSLint 会在这个函数上给出严格的违规错误?
【发布时间】:2013-07-20 03:40:53
【问题描述】:

JSLint 给了我“严格违反”错误,尽管我在一个函数中使用了“this”上下文,将它隐藏在全局范围之外。

function test() {
    "use strict";
    this.a = "b";
}

作为记录,我使用 Webstorm 中内置的 JSLint 解析器。

【问题讨论】:

  • 当我将此代码粘贴到 JSLint.com 时,所有默认选项都没有收到错误消息。更改函数名称将其删除的错误上下文是什么?
  • 我正在使用 Webstorm,它可能有一个过时的 JSLint 版本
  • 您是否有两个函数命名为test(在您的实时代码中)(相当于)?然后改变大小写会使它们变得不同。

标签: javascript error-handling jslint webstorm use-strict


【解决方案1】:

这是因为 JSLint 无法将您的函数识别为构造函数。按照惯例,您必须使用大写字母。

function Test() {
    "use strict";
    this.a = "b";
}

【讨论】:

  • 你可以看看jshint.com。它提供了更多的控制,而不是将您锁定在由 Crockford 的意见而不是规范控制的选项中。你遇到的问题也发生在非构造函数上,如果你声明函数,你将把对象作为方法。 (例如,如果在您的function test(){...} 之后您有obj.test = test;,那么您最终得到了一个在test 属性上具有正确名称的函数,但由于IE 存在的问题而没有使用命名函数表达式。)
猜你喜欢
  • 2013-08-10
  • 2011-01-30
  • 2014-06-02
  • 2012-05-27
  • 2013-05-09
  • 2015-07-26
  • 2013-04-05
相关资源
最近更新 更多