You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript函数报错Cannot read property 'length' of undefined,arr[i]未定义的原因是什么?

为啥arr[i]会变成undefined?

嘿,这个错误的根源其实是数组循环的边界条件写错了,咱们来掰扯清楚:

核心问题:循环越界了

JavaScript里数组的索引是从0开始的,比如你传入的arr是[[1,2,3],[4,5,6],[7,8,9,0]],它的length是3,有效的索引只有0、1、2这三个。

但你第一个for循环的条件写的是:

for (i = 0; i <= arr.length; i++) {

这意味着i会从0一直循环到3(因为3 <= 3是成立的),当i等于3的时候,arr[3]根本不存在——数组里没有第4个元素,所以它的值就是undefined。这时候你再去访问arr[i].length,自然就会抛出Cannot read property 'length' of undefined的错误啦!

怎么修复?

把第一个循环的终止条件改成小于数组长度,也就是:

for (let i = 0; i < arr.length; i++) {

这样i只会跑到2,不会触及不存在的索引3,arr[i]就始终是有效的子数组了。

顺便提两个小坑(避免后续踩雷)

  • 第二个嵌套循环也有同样的问题:j <= arr[i].length要改成j < arr[i].length,不然也会访问到子数组的undefined索引。
  • 变量i和j没有用let声明,会变成全局变量,最好加上let,避免污染全局作用域。

内容的提问来源于stack exchange,提问作者Harvey Johnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 08:47:36