JavaScript数组长度陷阱:字符串键与数字索引的区别

作者:小括号时间:2026-10-26 05:22:11浏览:106

本文探讨JavaScript中数组长度变化的两个关键场景:使用字符串键(如name)赋值不改变length,而使用数字字符串(如'3')会扩展数组并填充undefined。理解这一机制有助于避免隐蔽的越界错误。

第一点:

字符串键赋值不改变数组长度

示例代码如下:

 
var lennon=Array();
lennon["name"]="windy";
lennon["year"]="1989";
lennon["living"]=true;
alert(lennon.length);

运行结果显示:lennon.length 为 0


字符串键赋值不改变数组长度 示例代码如下:   

原因分析:


通过上述方式增加数组元素,即使用字符串作为键名,不会改变数组的长度属性。


arr["a"]=3;


第二点:

数字索引字符串导致数组扩展

另一组示例代码如下:

 
var foo2 = [];
foo2['3'] = 3;
foo2['age'] = 20;
debugger;
alert(foo2.length);

字符串键赋值不改变数组长度 示例代码如下:

此时 foo2.length 的值为 4



所有未显式赋值的数组索引位置,其值将被定义为 undefined。


JavaScript 具备自动调整数组大小的机制,这种特性容易引发数组越界(out of bounds array)问题,且此类错误较难察觉。因此,在处理数组时需格外注意类似情况。

作者最新文章