你所不知道的javascript数组特性

本文探讨了JavaScript数组的一些非常规用法,包括负数下标、对象作为下标及伪二维数组的实现方式。揭示了这些奇特现象背后的原理。

工作中,我们经常使用js的数组,但是,下面的东西你见过吗?

1,文本下标:

1 var  a=[];
2 a[-1]=1;  

你想过数组的下标为负数的情况吗?我们对数组的下标规定从0开始。但是上面那么写也还是可以的。不过,请看:

1 console.log(a.length); //0
2 console.log(a[-1]); // 1
3 console.log(a["-1"]);//1
4 a.hasOwnProperty(-1); //true

这个说明此处还是以对象的属性存储的。

2,二维数组:

1 var a = [];
2 a[0,0]=1;
3 a[0,1]=2;
4 a[1,0]=3;
5 a[1,1]=4;
6 
7 console.log(a.length); //2
8 console.log(a[0]); //3
9 console.log(a[1]); //4

js本身是不支持二维数组的,所以上面的length长度为2,它的内部实现是将二维数组小标当成逗号表达式,所以只有最有一个值有效。

如果你非要实现二维数组,那么也是可以的:

1 var  a = [1];
2 var  b=[];
3 b[0]=a;
4 console.log(b[0][0]); //1

3,对象下标:

当数组的下标为对象时,js会试图将它转化为数值,如果不行,则把它转化为字符串。

1 var   a = [];
2 var b ={c:1};
3 a[b]=2;
4 console.log(a[b]);//2

开心一刻:

转载于:https://www.cnblogs.com/wenber/p/3643664.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值