论点集实际上是如何运作的



我有这样的代码,它可以工作:

$(document).ready(function() {
    $("#run").click(function() {
        $("div:animated").toggleClass("colored");
    });
    function animateIt() {
        $("#mover").slideToggle("slow", animateIt);
    }
    animateIt();
});

使用arguments.callee,我们调用函数本身,因此不需要函数的名称。因此,这也应该起作用,但事实并非如此。有人能告诉我为什么吗?

$(document).ready(function() {
    $("#run").click(function() {
        $("div:animated").toggleClass("colored");
    });
    function() {
        $("#mover").slideToggle("slow", arguments.callee);
    }
});

在原始脚本中,您声明了函数animateIt,然后立即调用它,但在修改后的脚本中,声明了闭包,而从未调用过它。

你应该尝试改变这个:

function() {
  $("#mover").slideToggle("slow",arguments.callee);
}

这个:

(function() {
  $("#mover").slideToggle("slow",arguments.callee);
})();

也就是说,您在同一行声明并调用闭包。

请记住,据我所知,arguments.calleearguments.caller的使用是非常不鼓励的,应该避免。

最新更新