如果它们都包含在另一个函数中,我是否必须在另一个函数使用它之前定义一个js函数?

时间:2012-09-26 05:27:08

标签: javascript jquery

我有以下代码:

    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函数都包含在另一个函数中。

1 个答案:

答案 0 :(得分:2)

如果您将其定义为:

function onDone() {}

然后,您不必在同一范围内使用它之前定义它,因为所有这样的函数定义都会自动“提升”到函数的顶部,并在该范围内的任何代码运行之前定义。

如果您将其定义为:

onDone = function() {}

然后,javascript尊重您运行代码的顺序,onDone没有此值,直到您的函数中正常的代码执行流程执行该代码行,因此需要执行此行在调用任何使用onDone的内容之前。