0

我正在用 JSFiddle 校对这个函数,它说第二行缺少一个分号,但是,我无法确定它会去哪里。

function debtSpiral() {
  var debtID = setInterval(debtIncrease() { //Sets variable for loop stopping later
    debt = (debt * 0.10) + debt; //Increases debt by ten percent...
    document.getElementById("debt").innerHTML = "You owe " + debt + " click(s)"; //Display debt
  }, 60000); //...per minute
  if (debt < 1) { //If you owe less than 1 click
    clearInterval(debtID); //Stop 
  }
}

此外,JSFiddle 在第五行报告说它“期望一个赋值或函数调用,而是看到一个表达式”。你能解释一下这个以及如何解决它吗?

最后,为什么我需要(end)在第九行使用?

有问题的小提琴(按“JSHint”查看错误)

4

3 回答 3

1

这只是一个语法错误:

var debtID = setInterval(debtIncrease() { //Sets variable for loop stopping later

我不知道作为替代品有什么建议,因为它真的没有意义。该setInterval()函数将字符串(不要这样做)或函数引用作为其第一个参数。您的代码都不是;这不是什么。这是一个函数调用,后跟一个块,在这种情况下是无效的。

也许您的意思是(正如对此答案的评论所暗示的那样)

var debtID = setInterval(function debtIncrease() { // ...
于 2014-01-01T23:06:17.063 回答
1

您忘记了匿名函数没有名称:

var debtID = setInterval(function () {

当解析器抱怨分号或其他错误位置时,它通常不是它实际需要的分号,只是代码中有一个错误,它无法弄清楚如何解析它。

于 2014-01-01T23:09:34.263 回答
0

正如其他人回答的那样,您正在尝试调用命名函数而不是创建匿名函数。修复它setInterval(function() {});

但是,我注意到了一些可能感兴趣的东西。

命名匿名函数表达式

可以为匿名函数表达式命名,以便稍后调用它:(function foo() {}),现在foo可以在该闭包中使用。但是,这可能存在问题,在kangax 的优秀文章中进行了解释。

不过,这不是一个函数声明,我们都知道这是可以的,完全没问题,而且在道德上是正确的:function foo() {}. 注意缺少周围的括号。

于 2014-01-01T23:20:29.403 回答