JSLint和未定义函数

JSLint and undefined functions

本文关键字:函数 未定义 JSLint      更新时间:2023-09-26

我喜欢生活在一个没有绒毛的世界里。就是JSLint。但我有一些问题,我不确定我应该忽略或解决。具体来说,我得到了一些:

[functionName] not defined

错误。我确实认识到你应该在使用函数之前定义它,我假设这就是消息真正警告的内容,但这里有两种情况,我认为存在有效异常:

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

在一个简单的文件,开始与典型的无冲突包装jQuery我得到一个警告说,"jQuery(文档).ready(函数($){"没有定义。显然,jQuery是在一个单独的文件中定义的,需要保持独立。明白了吗?

第二个例子确实非常相似,尽管可以说它可以避免。在这种情况下,我有两个JS文件在我的项目。一个看起来就像上面的那个(也就是,它是一组DOM触发的事件,包裹在jQuery的"ready"事件中)。另一个有许多辅助函数,如下所示:

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

不管怎样,要接受各种想法。这是过滤JSLint的建议还是我应该在代码中修复的东西?

你会得到这些错误,因为JSLint认为在将来的某个时候你可能会做:

var doSomethingImpressive = function() { }

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

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