0

我正在重写我的 jQuery 代码,'use strict';我的函数有很多问题。

var queue = $(function(start) {
    var rest = [].splice.call(arguments, 1),
                promise = $.Deferred();

    if (start) {
        $.when(start()).then(function () {
            queue.apply(window, rest);
        });
    } 
    else {
        promise.resolve();
    }
    return promise;
});

在“使用严格”之前工作的原始功能是,也许我把它改写得很糟糕。

function queue(start) {
var rest = [].splice.call(arguments, 1),
    promise = $.Deferred();

if (start) {
    $.when(start()).then(function () {
        queue.apply(window, rest);
    });
} else {
    promise.resolve();
}
return promise;

}

这个函数返回对象没有应用方法,我不知道为什么。

当然我需要改进我的代码并且不知道如何开始,因为一切正常,然后我使用'use strict',并且所有中断。我必须重写我所有的代码吗?这只是一个命名约定问题?

请任何帮助将不胜感激

4

1 回答 1

0

我认为您的问题与“使用严格”无关。

var queue = $(function(start) { ... })

将执行您的函数并使用 jQuery 对象作为参数(开始)调用它。然后在你的函数内部你尝试调用queue.apply哪个不是函数(如错误消息所说,我猜那queue是未定义的)。

也许你想写:

var queue = function() { ... }
于 2013-09-16T10:53:56.073 回答