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

Javascript 如果js函数都包含在另一个函数中,我是否必须在另一个函数使用它之前定义js函数?,javascript,jquery,Javascript,Jquery,我有以下代码: doAjax = function () { $.ajax({ cache: false, url: url, dataType: 'html' }) .done(onDone) .fail(onFail) .always(function () { ; }); },

我有以下代码:

    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”之前使用了“onDone”。这是我应该避免的吗?这是个问题吗。请注意,doAjax和onDone函数都包含在另一个函数中。

如果您这样定义它:

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

如果您将其定义为:

function onDone() {}
onDone = function() {}

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

这是因为您没有使用
var
keyword。抱歉,上面有一些代码使用了var关键字。函数是声明的。我把所有函数都声明为变量,比如:var x=function(){},var y=function(){}等等。那么你是说如果我这样做的话,声明的顺序可能会有问题吗?你建议的方式有什么缺点吗?Thanks@SamanthaJ-我知道将它们声明为
函数onDone(){}
没有缺点。您不能将该表单用于方法赋值,但它适用于常规函数。很抱歉问了这么多问题。但是你能解释一下你所说的“你不能将这种形式用于方法赋值”是什么意思吗?在我的代码中,我使用onDone函数作为ajax调用中的参数。这会有问题吗?@SamanthaJ-方法定义的形式必须是:
obj.Method=function(){}
obj.prototype.Method=function(){}
,因此它们总是涉及赋值。