3

前と同じコードですが、質問が異なります:

次のようなコードがあります。

/*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 によって評価されますか?

4

1 に答える 1

1

グローバルとして宣言するのではなくonDialogDone()、次の 2 つの回避策のいずれかで警告を削除する必要があります。

  1. onDialogDone()andの順序を入れ替えますdoDialogAjax()(@James Allardice の提案による)。JSLint は、関数 (または var 名) へのすべての参照が、宣言されている場所よりもファイル内の下位にあることを想定しています。
  2. 物事をその順序に並べることを不可能にする循環参照がある場合 (または組織的にこのように並べ替えたくない場合)、次のトリックを使用できます。

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

オプションを使用してこの警告を完全に無効にする 3 番目のオプションがありundef: trueますが、お勧めしません。この特定の警告は、コード内のタイプミスやその他の保証されたクラッシュを検出するのに最適な警告の 1 つです。(また、JSLint が 'undef' オプションを削除したようです)。

于 2013-05-13T06:58:28.140 に答える