newnooftimes = nooftimes + 1;
if (nooftimes < 10) {
setTimeout("roll(newnooftimes);", 150);
}
VS
if (nooftimes < 10) {
setTimeout("roll(nooftimes + 1);", 150);
}
为什么后者不起作用,即使前者有效?
编辑:这是我的全部功能。似乎变量超出范围可能存在一些问题?我是javascript的新手,所以会感谢一些帮助指出我出了什么问题。此函数之前在回复中使用建议的代码,但它仍然不起作用。 roll()只被函数外的另一个调用调用一次。递归永远不会发生 - 为什么?function roll(nooftimes) {
ctx.clearRect(dicex,dicey,diceWidth,diceHeight); //clears the space where the dice face may have been already drawn
var roll = 1+Math.floor(Math.random()*6);
drawFace(roll);
if (nooftimes < 10) {
setTimeout(function () { roll(nooftimes + 1); }, 150);
}
}
答案 0 :(得分:1)
用lambda包裹它。您应该将函数传递给它,而不是函数调用。虽然浏览器经常试图弄清楚你的意图,但有时候一些粗略的事情会起作用。
if (nooftimes < 10) {
setTimeout(function () { roll(nooftimes + 1); }, 150);
}