未捕获的TypeError:无法读取未定义的属性“ length”

时间:2019-12-12 06:37:03

标签: javascript field

在使用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

任何有关如何调试此问题的建议将不胜感激。

2 个答案:

答案 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