日期:2014-05-16  浏览次数:20299 次

一段js代码的问题



(function(){
  setTimeout(function(){
  if(aIndex > length){
  aIndex = 1;
  }
  images[0].src = cases["index"+aIndex];
  links[aBefore-1].className = "";
  links[aIndex-1].className = "hover";
  aBefore = aIndex;
  aIndex++;
  setTimeout(arguments.callee,1500)
  },1500)
  })()

学习别人的js代码中,看到一些代码片段不是很懂...
比如上面那一段,有两个setTimeOut,而且两个都是执行的中间的那个方法。个人就觉得是否重复了,
于是就动手去掉了两个setTimeOut中的任意一个,但是无论去掉哪个...这个方法都不能用了。不知道这里是什么原理。

还有就是这里的callee,不知道为什么我就想到了闭包,这里有没有涉及到闭包呢?




------解决方案--------------------
setTimeout只执行一次,所以最后需要一个反复调用自己