关于页面每秒刷新时间的问题,两种代码有什么区别?

来源:8-3 计时器setInterval()

tanglj22

2016-04-26 15:33

我尝试每隔1秒显示一次时间,这样就可以:

window.onload=function(){
//定时器每秒调用一次fnDate()
   setInterval(function(){fnDate();},1000);
};
function fnDate(){
   var D=new Date();
   alert(D);
}

这样就不行:

window.onload=function(){
//定时器每秒调用一次fnDate()
   setInterval(fnDate(),1000);
};
function fnDate(){
   var D=new Date();
   alert(D);
}


写回答 关注

2回答

  • RossRoma
    2016-04-26 16:38:59
    已采纳

    两种写法别分是:
    A: setInterval("fnDate()",1000);
    B: setInterval(fnDate,1000);
    注意 "" 与 () 在什么时候使用,什么时候不使用。

    tanglj...

    是这个细节~我还以为和闭包什么的扯上关系了

    2016-04-26 16:51:14

    共 2 条回复 >

  • kuban
    2016-04-26 16:39:50

    setInterval(fnDate(),1000);改为setInterval(fnDate,1000);setInterval("fnDate()",1000);或者就达到你要的效果了

    下面说说原因

    setInterval(要调用的函数或要执行的代码串,1000);

    fnDate()是直接执行,如果有返回值,相当于返回值放到setInterval的第一个参数位置,所以人家执行一次就不动了。

    fnDate是要调用的函数,放到第一个参数位置到时间了再执行,所以一直执行。

    "fnDate()"是代码串,每到时间解析一次,解析成fnDate(),然后达到一直执行

    如有错误,望指正

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题