0

我很想生活在一个无棉绒的世界里。JSLint 就是这样。但是我遇到了一些我不确定是否应该忽略或修复的问题。具体来说,我得到了一些:

[functionName] not defined

错误。我确实认识到您应该始终在使用它之前定义该函数,并且我认为这是消息真正警告的内容,但这里有两种情况,我认为有一个有效的例外:

jQuery(document).ready(function($) {
   // code goes here
}

在一个以 jQuery 的典型无冲突包装器开头的简单文件中,我收到一条警告说“jQuery(document).ready(function($) {”没有定义。显然 jQuery 是在一个单独的文件中定义的,需要保持独立。 那有意义吗?

第二个例子非常相似,尽管可以说它更容易避免。在这种情况下,我的项目中有两个 JS 文件。一个看起来就像上面的那个(又名,它是一组 DOM 触发的事件,包装在 jQuery 的“就绪”事件中)。另一个有许多帮助函数,如下所示:

function doSomethingImportant() { };
function doSomethingImpressive() { };

然后在第一个 JS 文件中调用这些函数。JSLint 不喜欢这样,每次第一个 JS 文件调用第二个 JS 文件中定义的函数时都会抱怨: doSomethingImportant() { 未定义。然而实际上,由于函数是在加载时定义的,并且对这些函数的调用总是在之后基于 DOM 事件发生,因此似乎从来没有真正的问题。

无论如何,对想法持开放态度。这是过滤 JSLint 的建议还是我应该在代码中修复的情况?

4

1 回答 1

1

您收到这些错误是因为 JSLint 假设在将来的某个时候您可能会这样做:

var doSomethingImpressive = function() { }

在这种情况下你会得到一个错误,因为定义函数的文件包含在函数调用之后(如此所述)

jQuery 调用也是如此。您可以更改脚本的顺序,也可以安全地忽略错误。

于 2013-01-01T10:01:56.043 回答