【问题标题】:JSLint and undefined functionsJSLint 和未定义的函数
【发布时间】:2012-12-16 01:32:22
【问题描述】:

我很想生活在一个无棉绒的世界中。 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 的建议还是我应该在代码中修复的情况?

【问题讨论】:

  • 看页面底部,有一个输入框,predefine global variables here。只需在此处添加所有不带逗号的全局变量,例如jQuery doSomethingImportant doSomethingImpressive.

标签: javascript jquery jslint


【解决方案1】:

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

var doSomethingImpressive = function() { }

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

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

【讨论】:

    猜你喜欢
    • 2019-01-30
    • 2012-10-09
    • 2014-06-07
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 2010-10-22
    相关资源
    最近更新 更多