Js冷知识之数组

length属性

JavaScript使用一个32位整数保存元素个数,也就是说,length属性的最大值是4294967295.

只要是数组,就一定有length属性,它的值就是动态的,等于键名中最大的整数加上1.

因为本质上,数组是一种特殊的对象,typeof 运算符会返回数组的类型是object 它的特殊性体现在它的键名是按次序排列的一组整数(0,1,2,...),数组成员的键名是固定的,不用为每个元素指定键名,但是在普通对象中,该指定的键名还得指定.

JavaScript语言规定,对象的键名一律为字符串,所以,数组的键名其实也是字符串,之所以可以用整数下标读取,是因为非字符串的键名会被转为字符串.比如 var a=[]; a[1.000] = 6; console.log(a[1]])//6

由于1.000转成字符串是1,所以通过数字1可以读取到数值.

数组的数字键名不需要连续.

length属性又是可写的,如果人为给length属性设置一个小当前数组成员个数的值,该数组的成员会自动减少到length设置的值.

清空数组的一个有效方法就是将length属性设置为0

如果设置length属性的值为大于当前成员个数的一个数值,则数组的成员数量会增加到这个值,新增的位置都是空位.读取这些空位的时候会返回 undefined

数组的空位与数组的某个位置是undefined是不同的,如果是空位,使用数组的forEach方法.for...in 以及Object.keys方法进行遍历,空位都会被跳过.

in运算符

检查一个键名是否存在的运算符 in ,适用于对象,当然也适用于数组.

var arr =['a','b','c']; 2 in arr//true '2' in arr//true 4 in arr//true

for...in 循环不仅可以遍历对象,也可以遍历数组,毕竟数组只是一种特殊的对象.

但是 for...in 不仅会遍历数组所有的数字键,还会遍历所有的非数字键,所以在业务中不推荐用 for...in 循环,数组的遍历可以考虑用for 或者 while 循环.

a.foo = true;
for(var key in a){
  console.log(key);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值