javascript - 函数在循环外定义,但在循环内定义?

标签 javascript loops canvas

我试图在循环中运行一个函数,但是当我运行它时,我得到一个 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/

相关文章:

javascript - webpack 需要的动态文件路径?

javascript - HTML <select> 和 <option> 条件标签

javascript - 如何以易于访问的方式隐藏 jQuery Mobile 站点中的所有标签?

Python循环遍历两个文件,进行计算,然后输出3个文件

Android:检查是否有任何东西被绘制到 Android Canvas

javascript - Html5 Canvas描边透明渐变线

javascript - : "describe" and "it" coming from? 这个词来自哪里

java - 如何针对特定情况重复 `try` block ?

java - 写入文件并循环(循环未正确执行)

javascript - 如何使用 canvas 和 javascript 创建运动模糊效果?