功能无返回值

时间:2013-03-05 20:57:58

标签: javascript function return return-value

在javascript中,为什么这段代码有用?

var myVar=setInterval(
   function(){
      myTimer()
   },1000
);

function myTimer()
{
   var d=new Date();
   var t=d.toLocaleTimeString();
   document.getElementById("demo").innerHTML=t; //displays time
   dpcument.getElementById("demo2").innerHTML = myVar; //displays 1
}

为什么myVar保持值1,即使我没有从函数返回任何内容?

3 个答案:

答案 0 :(得分:5)

setInterval返回一个值,而不是您的函数。它返回intervalID,因此您可以使用clearTimeout清除它。

答案 1 :(得分:2)

myVar保存对setInterval的调用的返回值,而不管您是否声明了匿名函数。

答案 2 :(得分:0)

myVar会将调用的返回值设为setInterval,而不是来自myTimer的匿名函数。

以下是它的工作原理:

  1. 您调用setInterval,它会返回一个计时器ID。你传递了对匿名函数的引用。
  2. 当间隔到期时,将在内部调用匿名函数。它返回undefined(但没关系,因为它在内部调用,并且从不使用返回值)。
  3. 每次调用匿名函数时,它都会调用myTimer,它也返回undefined。这永远不会在您的匿名函数中使用。