我是 jQuery 新手,我不明白为什么我会在控制台日志中看到这个“if 结束”行。如果 toggleBox 在“if 结束”控制台日志行之前调用自己,那么 console.log() 函数是如何处理的?
似乎第 1 行和第 2 行会重复,但不知何故,第 3 行正在运行。看起来它只是在跳来跳去。在调用 box.fadeToggle 之前,toggleBox 调用实际上会跳回自身,完成 if 块,然后出于某种原因跳回 box.fadeToggle 吗?
$(document).ready(function() {
var box = $("#box");
var para = $("p");
var i = 0;
para.text(i);
function toggleBox(i) {
console.log($.now() + " 1. entering toggleBox. i=" + i);
box.fadeToggle(2000, function() {
console.log($.now() + " 2. after fade time. i=" + i);
i++;
if (i < 4) {
para.text(i);
toggleBox(i);
console.log($.now() + " 3. end of if. i=" + i);
};
});
};
toggleBox(i);
});
控制台输出:
69387 1.进入toggleBox。我=0
71398 2. 褪色时间后。我=0
71399 1.进入toggleBox。我=1
71400 3. if 结束。我=1
73396 2. 褪色时间后。我=1
73397 1.进入toggleBox。我=2
73397 3. if 结束。我=2
75398 2. 褪色时间后。我=2
75399 1.进入toggleBox。我=3
75399 3. if 结束。我=3
77399 2. 褪色时间后。我=3