4

最近 js 文件中的一个错字导致我的一个项目出现问题,但仅限于某些浏览器。我正在尝试通过 jsLint 运行我们的大部分 js 文件以查找任何其他未检测到的问题。目标是让我们所有的 js 文件通过 jsLint 或者通过更正问题或者如果我对问题没问题然后打开适当的 jsLint 选项。

如果我能做到这一点,那么将来我想找到一种更频繁地运行 jsLint 的方法,但首先我需要让所有文件都通过。

不过,我在一个问题上遇到了很多麻烦。我不断收到“在定义之前使用 X”的警告/错误。我可以在定义之前使用项目,所以我想关闭这个警告。我尝试在顶部的评论中设置 undef: true 并通过网络界面设置复选框,但截至今天,我仍然收到此错误。

这个选项是坏的还是我做错了什么或误解了这个选项的作用。

根据文档,这应该适用于功能。

我目前正在使用 jsLint网络工具来扫描下面的代码。

/*jslint undef: true, white: true, browser: true */
/*global jQuery */

(function($){
    "use strict";

    $(function() {
        createDashboard();
        loadDashboardDataFromControls();
    });

    function loadDashboardDataFromControls()
    {
    }

    function createDashboard()
    {
    }
}(jQuery));
4

2 回答 2

2

根据JSLint 源代码(撰写本文时的最新提交),在严格模式下undef是 sef :false

function use_strict() {
    if (next_token.string === 'use strict') {
        if (strict_mode) {
            warn('unnecessary_use');
        }
        edge();
        advance();
        semicolon();
        strict_mode = true;
        option.undef = false;
        return true;
    }
    return false;
}

正如我假设您知道的那样,您可以通过重新排列源代码来轻松避免警告。简单地移动loadDashboardDataFromControls()loadDashboardDataFromControls()上面$([...])

注意:虽然在严格模式下,变量需要在使用前定义,但您的代码显然不会违反该规则。所以,在我看来,我们看到的至少是一个文档错误:JSLint 文档应该说明在严格模式下,undef标志设置为false.

于 2012-08-18T07:24:36.127 回答
0

要禁用此消息,您可以在项目的根目录中创建一个 .jshintrc 文件并添加代码:

{
   "latedef": false
}
于 2015-03-04T21:25:06.263 回答