Jquery arguments.callee实际上是如何工作的?

Jquery arguments.callee实际上是如何工作的?,jquery,Jquery,我有这样一个代码: $(document).ready(function() { $("#run").click(function() { $("div:animated").toggleClass("colored"); }); function animateIt() { $("#mover").slideToggle("slow", animateIt); } animateIt(); }); 使用参数。被调用方调

我有这样一个代码:

$(document).ready(function() {
    $("#run").click(function() {
        $("div:animated").toggleClass("colored");
    });

    function animateIt() {
        $("#mover").slideToggle("slow", animateIt);
    }
    animateIt();
});
使用
参数。被调用方
调用函数本身,因此不需要函数的名称。所以这个,应该也行,但是不行。谁能告诉我为什么

$(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);
})();
也就是说,在同一行上声明和调用闭包


请记住,据我所知,
参数.被调用方
参数.调用方
的使用是非常不鼓励的,应该避免使用。

在原始脚本中,您声明函数
animateIt
,然后立即调用它,但在修改后的脚本中,你没有调用它就声明了闭包

您应该尝试更改此选项:

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

(function() {
  $("#mover").slideToggle("slow",arguments.callee);
})();
也就是说,在同一行上声明和调用闭包


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

这是无效的javascript。你必须给你的函数声明命名。@Esailija,需要引用。在我看来,像是一个.arguments变量在哪里声明的?arguments.callee应该避免。ECMAscript上不推荐使用它5@AlexanderSitnikov,则
参数
对象是每个函数调用的一部分。签出-这是无效的javascript。你必须给你的函数声明命名。@Esailija,需要引用。在我看来,像是一个.arguments变量在哪里声明的?arguments.callee应该避免。ECMAscript上不推荐使用它5@AlexanderSitnikov,则
参数
对象是每个函数调用的一部分。退房-你在我拿到一半之前写完了,有空。你在我拿到一半之前写完了,有空。