Javascript中的自我调用函数有害吗?

时间:2014-01-06 15:02:06

标签: javascript function recursion call

我有一个Javascript函数,它调用自身以刷新通知栏。我的功能就像:

function refreshLoop() {
      refresh();
      setTimeout("refreshLoop();", 10000);
}

我的问题是,如果我使用这样的功能,那么会有任何危害 - 编程错误 - 。我问这个问题,因为你看到refreshLoop()函数永远不会结束。

我应该像这样使用它还是有其他想法?

由于

3 个答案:

答案 0 :(得分:3)

这个结构经常而且很好(特别是如果setTimeout的条件调用使得setInterval很难使用),但它并不像你那样编写。当你可以直接传递函数时,不要评估代码。使用此:

function refreshLoop() {
      refresh();
      setTimeout(refreshLoop, 10000);
}

答案 1 :(得分:0)

您可以通过删除超时来结束超时循环:

var timeout;

function refreshLoop() {
  refresh();
  timeout = setTimeout(refreshLoop, 1000);
}

refreshLoop()

// later on
clearTimeout(timeout)

答案 2 :(得分:-1)

我没有看到任何问题,但你可能会丢失eval“refreshLoop();”

function refreshLoop() {
  refresh();
  setTimeout(refreshLoop, 10000);
}