2013-07-21 22 views
7

JSLint给我提供了“严格违规”的错误,尽管我在一个隐藏在全局范围内的函数中使用了“this”上下文。为什么JSLint在这个函数上给出严格的违规错误?

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

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

+0

将此代码粘贴到JSLint.com时,所有默认选项都没有收到错误。更改函数名称的错误的上下文是什么将其删除? – ruffin

+0

我正在使用Webstorm,它可能有一个过时的JSLint版本 –

+0

任何机会,你有两个函数命名(相当于)'测试'(在你的实时代码)?然后改变案件会使他们不同。 – ruffin

回答

10

这是因为JSLint不能识别你的函数作为构造函数。按照惯例,您必须使用大写字母。

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

你可以看看http://jshint.com。它提供了更多的控制,而不是将你锁定在由克罗克福德的意见而非规范控制的选项中。你遇到的问题也会发生在非构造函数中,如果你正在声明函数你将把它放在一个对象上作为方法。 (例如,如果在你的'function test(){...}'后面有'obj.test = test;',那么你在'test'属性中有一个具有合适名称的函数,但是没有使用命名函数表达式,因为IE与他们有问题。) –

相关问题