首页 > 解决方案 > 无法读取nodejs中未定义的属性“长度”

问题描述

我在节点 js 中执行以下代码。

我在顶部声明了一个名为 graph 的二维数组。如果我graph[0].lengthmain()函数和traverseGraph函数中访问属性,它成功地将值显示为 2。但是,如果我将 0 作为值传递给st函数的参数traverseGraph然后尝试访问graph[st].length,我得到:

无法读取未定义错误的属性“长度”。

var graph = [[1,2], [2,3]];

main();
function traverseGraph(st)
{
    console.log(graph[0].length);//successfully works
   while(graph[st].length)//fails
    {
        for(var array_el=0; array_el<graph[st].length; array_el++)
        {
            if(graph[st][array_el]){
                var next = graph[st][array_el];
                return traverseGraph(next);
            }
        }
    }
    
    return next;
}
function main(){   
    console.log(graph[0].length); //successfully works
    traverseGraph(0);    
}

标签: javascriptnode.jsvisual-studio-code

解决方案


   while(graph[st] != null && graph[st].length)
    {
        for(var array_el=0; array_el<graph[st].length; array_el++)
        {
            if(graph[st][array_el]){
                var next = graph[st][array_el];
                return traverseGraph(next);
            }
        }
    }

固定的

   while(!graph[st] && graph[st].length)
    {
        for(var array_el=0; array_el<graph[st].length; array_el++)
        {
            if(graph[st][array_el]){
                var next = graph[st][array_el];
                return traverseGraph(next);
            }
        }
    }

图[2] 或图[3] 不存在

检查空


推荐阅读