javascript – jsLint仍然发出警告“X在它被定义之前就被使用了.”即使设置了undef

最近js文件中的拼写错误导致我的一个项目出现问题,但仅限于某些浏览器.我试图通过jsLint运行我们的大多数js文件来查找任何其他未检测到的问题.我们的目标是通过纠正问题或者如果我对该问题没问题然后打开相应的jsLint选项来让所有js文件通过jsLint.

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

虽然我在一个问题上遇到了很多麻烦.我一直收到“在定义之前使用了X”的警告/错误.我可以在定义之前使用项目,所以我想关掉这个警告.我已经尝试在顶部的注释中设置undef:true并通过Web界面设置复选框但截至今天,我仍然收到此错误.

这个选项是否被破坏,或者我做错了什么或误解了这个选项的作用.

根据docs,这应该适用于功能.

我目前正在使用jsLint web tool来扫描下面的代码.

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

(function($){
    "use strict";

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

    function loadDashboardDataFromControls()
    {
    }

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

最佳答案 根据
JSLint source code(撰写本文时的最新提交),在严格模式下,undef是假的:

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.

点赞