我试图在循环中运行一个函数,但是当我运行它时,我得到一个 robots.rn 不是一个函数。当我在循环之外运行该函数时,我没有任何问题,一切都按预期进行。我确信这是显而易见的事情,但我只是盯着我的代码太久了。任何帮助将不胜感激,谢谢。
我想要实现的基本想法是在随机位置绘制硬币 30 次(robot.maxCoins = 30);
当我像这样运行代码时(在循环之外)它可以工作
Robot.prototype.rn = function(){
robot.rn = {
rnX: robot.rnX = Math.floor(Math.random()*900)-20,
rnY: robot.rnY = Math.floor(Math.random()*400)-20
};
return robot.rn;
};
Robot.prototype.drawCoins = function(){
robot.rn();
console.log(robot.rnX);
ctx.beginPath();
ctx.arc(robot.rnX,robot.rnY,robot.coinD,0,2*Math.PI);
ctx.fillStyle = "yellow";
ctx.fill();
ctx.stroke();
};
这是循环中带有函数的代码(返回:robot.rn不是函数)
Robot.prototype.rn = function(){
robot.rn = {
rnX: robot.rnX = Math.floor(Math.random()*900)-20,
rnY: robot.rnY = Math.floor(Math.random()*400)-20
};
return robot.rn;
};
Robot.prototype.drawCoins = function(){
for(var i = 0; i<robot.maxCoins; i++){
robot.rn();
console.log(robot.rnX);
ctx.beginPath();
ctx.arc(robot.rnX,robot.rnY,robot.coinD,0,2*Math.PI);
ctx.fillStyle = "yellow";
ctx.fill();
ctx.stroke();
}
};
最佳答案
您正在覆盖robot.rn
robot.rn = {
rnX: robot.rnX = Math.floor(Math.random()*900)-20,
rnY: robot.rnY = Math.floor(Math.random()*400)-20
};
return robot.rn;
当您在没有循环的情况下使用它时,它不会失败,因为您不再尝试调用 rn
函数。
关于javascript - 函数在循环外定义,但在循环内定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33453909/