0

私は次のコードを持っています:

    doAjax = function () {
        $.ajax({
            cache: false,
            url: url,
            dataType: 'html'
        })
        .done(onDone)
        .fail(onFail)
        .always(function () {
            ;
        });
    },
    onDone = function (data) {
        content = data;
        if (content.match(/^[eE]rror/)) {
            mvcOnFailure(content);
        } else {

jslintで、定義される前に「onDone」などが使用されているというエラーが発生します。これは私が避けなければならないことですか、これは問題ですか。doAjax関数とonDone関数の両方が別の関数内に含まれていることに注意してください。

4

1 に答える 1

2

次のように定義すると、次のようになります。

function onDone() {}

次に、同じスコープで使用する前に定義する必要はありません。このようなすべての関数定義は、関数の先頭に自動的に「持ち上げられ」、そのスコープ内のコードが実行される前に定義されるためです。

次のように定義すると、次のようになります。

onDone = function() {}

次に、javascriptはコードを実行する順序を尊重し、onDoneそのコード行が関数内のコード実行の通常のフローで実行されるまでこの値を持たないため、を使用するものonDoneが呼び出される前にこの行を実行する必要があります。

于 2012-09-26T05:30:15.247 に答える