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,则参数
对象是每个函数调用的一部分。退房-你在我拿到一半之前写完了,有空。你在我拿到一半之前写完了,有空。