详解window.setInterval方法

我们经常会看到下边两种代码:

代码一:
<script>
function T(){window.status=new Date();}
setInterval(T,1000);
</script>

代码二:
<script>
function T(){window.status=new Date();}
setInterval("T()",1000);
</script>

执行结果是一样的,他们有什么不同呢?下边是《JavaScript 权威指南》第五版P935中对于setInterval第一个参数的说明:

引用内容 引用内容
周期性地调用的一个函数或者周期性执行的JavaScript代码串。如果这个字符串含有多个语句,那么每个语句之间都用分号分隔开。在IE 4中,这个参数必须是一个字符串,但在此后的版本中就不是这样了。

这就不难解释了:代码一是周期性地调用一个函数,代码二中则是周期性的执行JavaScript代码串(类似于eval那样执行代码串);

上边例子稍做修改:

<script>
window.setInterval(window.status=new Date(),1000);
</script>

结果是状态栏中的时间更新一次后就不再更新了,此处执行过程是先执行语句"window.status=new Date()",再将其返回值(new Date()的值)当作JavaScript代码串给setInterval执行。如仍要动态的在状态栏显示当前时间,可修改如下:

<script>
window.setInterval("window.status=new Date();",1000);
</script>


评论: 0 | 引用: 0 | 查看次数: 7562
发表评论
登录后再发表评论!