我用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)
?
The fiddle in question(按“JSHint”查看错误)
答案 0 :(得分:1)
这只是一个语法错误:
var debtID = setInterval(debtIncrease() { //Sets variable for loop stopping later
我不知道应该建议什么作为替代品,因为它实际上没有意义。 setInterval()
函数将字符串(不要那样做)或函数引用作为其第一个参数。你的代码既不是那些;它真的没什么。这是一个函数调用,后跟一个块,在这种情况下无效。
也许你的意思(作为对这个答案的评论建议)
var debtID = setInterval(function debtIncrease() { // ...
答案 1 :(得分:1)
您忘记了匿名函数没有名称:
var debtID = setInterval(function () {
当解析器抱怨错误分号或其他任何内容时,它通常不是它实际需要的分号,代码中只有一个错误,它无法弄清楚如何解析它。
答案 2 :(得分:0)
正如其他人已经回答的那样,您正在尝试调用命名函数而不是创建匿名函数。用setInterval(function() {});
但是,我注意到了一些可能感兴趣的东西。
可以为匿名函数表达式指定一个名称,以便稍后调用它:(function foo() {})
,现在foo
在该闭包内可用。但是,可能存在问题,在kangax's excellent article中解释。
这不是一个函数声明,我们都知道这是完全正确和道德正确的function foo() {}
。注意周围没有parens。