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)问题,且此类错误较难察觉。因此,在处理数组时需格外注意类似情况。
作者最新文章
JS语法错误会阻止加载吗?区分SyntaxError与资源加载失败
2026-11-05 16:08:46
JavaScript常见SyntaxError语法错误排查与修复方法
2026-11-05 13:58:44
JS中slice、substring和substr截取字符串的区别
2026-11-05 13:43:47
JS 转 TS 手动迁移最佳实践:从配置 tsconfig 到消除 any 类型
2026-11-05 11:53:32
为什么JS数组push后得到的是数字而不是数组?
2026-11-05 09:59:18
