0

在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

4

3 回答 3

5

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

于 2013-03-05T20:59:12.890 回答
2

myVarsetInterval无论您是否声明了匿名函数,都保存调用的返回值。

于 2013-03-05T20:58:48.410 回答
0

myVar将调用 to 的返回值setInterval,而不是您传递的匿名函数的返回值,也不是 from myTimer

下面是它的工作原理:

  1. 您调用setInterval,它返回一个计时器 id。您将一个对匿名函数的引用传递给它。
  2. 当间隔到期时,匿名函数被调用(内部)。它返回 undefined (但没关系,因为它是在内部调用的,并且从不使用该返回值)。
  3. 每次调用匿名函数时,它都会调用myTimer,它也返回 undefined。永远不会在您的匿名函数中使用它。
于 2013-03-05T20:59:13.470 回答