【问题标题】:TypeError: cannot read property 'length' of undefined (defined by function parameter)TypeError:无法读取未定义的属性“长度”(由函数参数定义)
【发布时间】:2017-04-28 23:58:50
【问题描述】:

我正在尝试使下面的简单代码正常工作,但总是出现以下错误:TypeError: cannot read property 'length' of undefined

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]]);

有什么问题?

【问题讨论】:

  • 您正在检查arr 是否未定义,而不是arr[i] 是否未定义..
  • 事实上,我们的许多代码让我眼花缭乱。在第二个 for 循环中,我真的增加了 i 而不是 j

标签: javascript for-loop multidimensional-array variable-length-array


【解决方案1】:

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

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

在内部 for 循环中,递增 i 而不是 j。您将离开数组的末尾,使arr[i] 未定义。

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

【讨论】:

    猜你喜欢
    • 2020-06-12
    • 1970-01-01
    • 2021-12-05
    • 2020-07-20
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多