我正在节点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);
}
答案 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]不存在
检查为空