找回密码
 注册

[JS] Javascript的length陷阱

php 发表于 2014/1/9 23:57 | 显示全部楼层 |阅读模式
js的length属性是用来获取数组的元素个数的,但这里面陷阱很深,绝大多数老师也不会告诉你这些陷阱。
1.只有数组才有length属性,对象没有,除非你自己加一个length属性或者把对象数组化。
2.length统计的数组元素个数仅针对键名为数字的元素,关联索引对应的元素将被忽略,有关联索引就变成了对象了。
3.length统计的数组元素个数是最大的数字键名对应的数值+1,系统会自动生成很多空元素,而不是你所看到的数组个数。
例证一:
弹出undefined,说明对象没有length属性
<script type="text/javascript">
        var a={};//创建一个空对象
        alert(a.length);
</script>
例证二:
弹出1,说明只有键名为数字的元素才会被统计
<script type="text/javascript">
        var a=[]
        a[0] = 0;
        a['wxc'] = 'wxc';
        alert(a.length);
</script>
例证三:
弹出1001,说明length属性的值是 最大数字键名对应的值+1,alert(a)会发现自动产生了很多空元素。
<script type="text/javascript">
        var a=[]
        a[0] = 0;
        a[1000] = 1000;
        alert(a.length);
</script>
关于统计数组或对象元素个数可以参阅准确地统计数组元素个数或对象的成员属性个数帖子。

手机版|轻松E站

轻松E站

快速回复 返回顶部 返回列表