无法读取node.js中未定义的属性“长度”

时间:2018-12-12 05:31:45

标签: javascript node.js visual-studio-code

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

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

  

无法读取未定义错误的属性'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);    
}

1 个答案:

答案 0 :(得分:0)

   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]不存在

检查为空