【问题标题】:Why does this simple script never end?为什么这个简单的脚本永远不会结束?
【发布时间】:2014-12-19 16:00:18
【问题描述】:

我有一个简单的 JavaScript 函数,如下所示:

countDown();

function countDown() {

  var count = 10;

  document.write(count);

  if (count > 0) {
    count = count-1;;
    setTimeout(countDown, 1000);
  }

}

为什么变量count 永远不会改变?这个功能永远不会结束。 . .

【问题讨论】:

  • 每次调用countDown 时,都会重置计数值。尝试将 var count 放在函数之外,使其具有全局范围。
  • 每次递归计数将重置为 10。
  • 不要使用document.write。特别是在文档完成加载之后。请参阅spec 中的警告。
  • 你不应该在函数内部设置var count。你重新初始化变量

标签: javascript function settimeout


【解决方案1】:

因为 countDown() 函数每次调用时都会将变量 count 设置为 10。轻微的范围更改将使函数的行为符合您的预期。

var count = 10;

countDown();

function countDown() {

  document.write(count);

  if (count > 0) {
    count = count-1;;
    setTimeout(countDown, 1000);
  }

}

【讨论】:

    猜你喜欢
    • 2013-09-11
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 2023-04-06
    • 2014-06-06
    • 2015-08-28
    相关资源
    最近更新 更多