-1

我试图使下面的简单代码工作,但总是得到以下错误:TypeError:无法读取未定义的属性“长度”TypeError:无法读取未定义的属性“长度”(由函数参数定义)

function multiplyAll(arr) { 


    var product = 1; 

     if (arr === undefined) { 
     return "Undefined Array!"; 
     } else { 


    for (var i = 0; i < arr.length; i++) { 
     for (var j = 0; j < arr[i].length; i++) { 
     product *= arr[i][j]; 
     } 
    } 
    return product; 


    } 
    } 


    multiplyAll([[7,2],[6,4],[5,8,9]]); 

什么问题?

+1

您正在检查是否arr''是不确定的,但不是是否'改编[I]'是不确定的.. – Blorgbeard

+0

事实上,很多我们这样的代码让我失明。在第二个for循环中,我真的增加了'i'而不是'j'。 –

回答

4

这似乎是一个复制粘贴& /错字错误:

for (var i = 0; i < arr.length; i++) { 
     for (var j = 0; j < arr[i].length; i++) 

在内部进行循环,你递增i代替j。您将排除阵列的末尾,使arr[i]未定义。

您可以通过使用调试器或致电console.log监控ij的值来解决此问题。你会注意到,i是增加过快,而j保持在0

相关问题