p5.js - 宽度未定义?

p5.js - width not defined?

var grid;
function setup() {
  createCanvas(800, 800);
  grid = {
    x1: width / 10,
    y1: height / 10,
    x2: width - grid.x1,
    y2: height - grid.y1,
    width: grid.x2 - grid.x1,
    height: grid.y2 - grid.y1,
    margin: grid.width / 10,
    //margin of each lines
  };

  background(255);

}

function draw() {
  grid();
  DDA(grid.x1, grid.y1, grid.margin, grid.margin);
}
// ......

我看到了这个问题,我将我的代码改成了这个,但是它不起作用并且有一个错误

"Line 4, col 3: Reassignment of 'grid', which is is a function. Use 'var' or 'let' to declare bindings that may change."

我正在使用 p5.js 制作网格图

在JavaScript中,变量和函数不能同名。 (更令人困惑的是,函数 变量!)

您的错误告诉您您有一个 grid 变量和一个 grid() 函数。您是否在其他地方定义了 grid() 函数?如果是这样,只需将 var grid 重命名为其他名称,这样它就不会与函数冲突。

如果您在任何地方都没有定义 grid() 函数,那可能是因为您调用 grid() 就像是在 draw() 函数中调用函数,而这并没有您 post 编写的代码没有意义。在您的代码中,grid 是一个对象,而不是函数。

如果您仍然遇到问题,请在新问题 post 中 post MCVE。 (您 post 编辑的代码 没有 显示您所描述的行为,因为它不完整。我们应该能够复制粘贴您的代码以查看完全相同的内容和你一样。)

您需要将网格变量中的所有子变量都放在网格启动函数中,如下所示:

grid = {
  start : function(){
    x1: width / 10,
    y1: height / 10,
    x2: width - grid.x1,
    y2: height - grid.y1,
    width: grid.x2 - grid.x1,
    height: grid.y2 - grid.y1,
    margin: grid.width / 10,
    //margin of each lines
  }
};
grid.start();

使用此代码并替换旧的网格变量。