newnooftimes = nooftimes + 1;
if (nooftimes < 10) {
setTimeout("roll(newnooftimes);", 150);
}
对比
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);
}
}