Javascript 如果一个文件中的函数被标记为全局函数,那么jslint是否不检查它们?

Javascript 如果一个文件中的函数被标记为全局函数,那么jslint是否不检查它们?,javascript,jquery,jslint,Javascript,Jquery,Jslint,代码与前面相同,但问题不同: 我有这样的代码: /*jslint browser: true*/ /*jslint vars: true */ /*global $, jQuery, adminModalDone, ajaxOnFailure, createModal, defineModal*/ /*global doAddSubmit, doResetTabs, mvcOnFailure*/ /*global onDialogDone, onDialogFail, submitHandler

代码与前面相同,但问题不同:

我有这样的代码:

/*jslint browser: true*/
/*jslint vars: true */
/*global $, jQuery, adminModalDone, ajaxOnFailure, createModal, defineModal*/
/*global doAddSubmit, doResetTabs, mvcOnFailure*/
/*global onDialogDone, onDialogFail, submitHandler*/

function dialog($link) {
    "use strict";

    function doDialogAjax() {
        $.ajax({
            cache: false,
            url: url,
            dataType: 'html'
        })
            .done(onDialogDone)
            .fail(onDialogFail);
    }

    function onDialogDone(data) {
        content = data;
        if (content.match(/^[eE]rror/)) {
            mvcOnFailure(content);
        } else {
            defineModal();
            createModal();
            doAddSubmit();
            doResetTabs();
            adminModalDone();
        }
    }
}

现在jslint抱怨我在OnDialogDone中的大部分函数都没有使用。因为我将onDialogDone定义为全局,所以它是否由jslint进行评估?

而不是将
onDialogDone()
声明为全局,这两种解决方法中的任何一种都应该删除警告:

  • 交换
    onDialogDone()
    doDialogAjax()
    的顺序(正如@James Allardice所建议的)。JSLint希望对函数(或变量名)的所有引用都出现在文件中比声明位置更低的位置
  • 如果存在循环引用,无法将事物按顺序排列(或者在组织上您不希望以这种方式重新排列事物),则可以使用以下技巧:

    var onDialogDone;
    function doDialogAjax() {
        // call to onDialogDone() is in here - ok since below the var declaration
    }
    onDialogDone = function (data) {
        // ...
    }
    

  • 还有第三个选项,完全通过
    undef:true
    选项禁用此警告,但我不建议这样做。这个特别的警告是捕获代码中的打字错误和其他保证崩溃的最佳警告之一。(还有,它看起来像)。

    为什么要告诉JSLint,当它在同一个文件中定义时,
    onDialogDone
    是全局的?对于在其他文件中定义但在此文件中使用的标识符,请使用
    global
    。因为如果在使用后声明,则会抱怨未声明:-(这不是
    global
    的目的,你只是在欺骗JSLint,让他认为函数必须在别处声明。@SamanthaJ-将
    onDialogDone
    的声明移到调用它的任何代码之前。JSLint:“你的JS代码是有效的。”