未捕获的类型错误:无法读取未定义的属性“长度”
2019-12-12
511
在使用 JavaScript 运行以下代码时,我在输出控制台中遇到了 Uncaught TypeError : Cannot read property 'length' of undefined :
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 < field.length; i++)
任何关于如何调试此问题的建议都将不胜感激。
2个回答
您很可能只是在这个函数中缺少一个返回语句:
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
}
Ivan86
2019-12-12
您在
generateField
函数中缺少
return
语句,正如
Functions - JavaScript|MDN
中所述:
A
function
without areturn
statement will return a default value. In the case of aconstructor
called with thenew
keyword, thedefault
value is the value of itsthis
parameter. For all other functions, the defaultreturn
value isundefined
.
在这种情况下,
generateField
被用作常规函数,它将返回
undefined
。因此,在尝试访问
field
变量上的
length
属性时会引发
Uncaught TypeError
。
cperezcapote
2019-12-12