我的朋友昨天问我一个特殊的javascript问题,我发现我无法解决它,因为没有人会写这样的代码:
function fun(){
fun1();
}
function fun1(){
setTimeout(fun(), 10000);
}
$(document).ready(function(){
fun();
});
他的问题是:你能告诉我第一次执行fun1和第二次执行fun1之间有多少秒? 10秒? 我不认为他的代码会正确执行,我通过chrome dev-tools测试他的代码来检查我是对的.Chrome dev-tools打印一条消息:
Uncaught RangeError: Maximum call stack size exceeded
我也想知道第一次执行fun1和第二次执行fun1之间有多少秒,即使我永远不会写这样的代码。有没有人知道这个问题的答案?
答案 0 :(得分:0)
你可以这样做:
var tm = null;
var times = 0;
function fun()
{
var d = new Date();
times++;
if (times == 2)
alert((d.getTime() - tm) + " milliseconds");
else
{
tm = d.getTime();
setTimeout(function () { fun(); }, 10000);
}
}
fun();
基本上你会在第二次调用函数时存储上次时间值并计算时差。