在使用JavaScript运行以下代码时,我面临着输出未捕获的 TypeError:无法在输出控制台中读取未定义的属性'length':
var field = [];
function setup()
{
createCanvas(625, 625);
field = generateField();
}
function draw()
{
background(51);
for(var i=0; i<field.length; i++)
{
field[i].draw();
}
}
function generateField()
{
var f = [];
for (var i = 0; i < 625; i++)
{
f.push(new Tile(i%25, Math.floor(i/25), "BARRIER"));
}
}
错误即将出现:for(var i = 0; i 任何有关如何调试此问题的建议将不胜感激。
答案 0 :(得分:2)
您很可能在此函数中缺少return语句:
function generateField()
{
var f = [];
for (var i = 0; i < 625; i++)
{
f.push(new Tile(i%25, Math.floor(i/25), "BARRIER"));
}
return f; // <-- this line
}
答案 1 :(得分:1)
您缺少return
函数上的generateField
语句,正如Functions - JavaScript|MDN上所解释的那样:
没有
function
语句的return
将返回默认值。如果使用constructor
关键字调用new
,则default
的值就是其this
参数的值。对于所有其他功能,默认的return
值为undefined
。
在这种情况下,generateField
被用作常规函数,它将返回undefined
。因此,尝试访问Uncaught TypeError
变量上的length
属性时,抛出field
。