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

JavaScript中push操作后数组首个元素为undefined的原因

问题原因解析

核心问题出在数组初始化的逻辑上:

  1. 首先看初始化代码:let myArray = [new Array(2)];
    这行代码创建了一个包含单个元素的数组,而这个单个元素本身又是一个长度为2的空数组——new Array(2)会生成一个长度为2,但所有位置都未被赋值的数组,访问它的任何索引都会返回undefined。此时myArray的结构是:[ [undefined, undefined] ],长度为1。

  2. 执行myArray.push(['hi', 'hello']);后,push方法会把新数组添加到myArray的末尾,此时myArray的长度变为2,结构变成:[ [undefined, undefined], ['hi', 'hello'] ]。

关于两个alert的差异:

  • alert(myArray[0][0]):访问的是myArray的第一个元素(也就是那个初始化的空数组)的第一个位置,结果自然是undefined。
  • alert(myArray[1][0]):访问的是myArray的第二个元素(你push进去的目标数组)的第一个位置,所以能得到预期的'hi'。

如果你想让myArray初始为空,后续再添加元素,正确写法应该是:

let myArray = [];
myArray.push(new Array(2));
myArray.push(['hi', 'hello']);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:02:03