您的位置 首页 java

奇怪的javascript数组的length属性

1 数组是js里的数据类型,数组是值的有序集合,数组元素可以是任意类型,一个数组元素可以是不同类型。

//如下定义,默认 索引 从0开始

var user = [“yangfutao”, ‘lily’, 100]

2 数组的索引是基于0的数字,大小范围是0-(2的32次方-2)

,数组的索引不一定是连续的,索引不连续的数组称为稀疏数组,省略的索引值为 undefined

示例如下:

//修改元素

user[2] = 300;

//增加 元素,自定义索引

user[‘age’] = 28;

user[5] = ‘jim’;

//删除元素,元素删除后,值变成了undefined ,但是length是不会变的

delete user[2]

delete user[‘age’]

//删除后的结果length还是6

3 每个数组都有length的属性,

示例如下:

//数组大小,以数字索引大小为准

var books = [‘ c++ ‘, ‘java’];

books.length // 2

books[5] = ‘php’;

books.length // 6 ,实际上,这时前面的索引为0,1,2,3,4,5,都是undefined

books[‘new’] = ‘go’;

books.length // 仍然是6,实际上,非数字索引不管增加多少个,对数组的length都没有影响,这是为什么呢,

//看到这里 可能会觉得有些奇怪,为什么js的数组和其他语言的数组差距这么大,其实通过上面的例子,数组的类型是object, 字符串 类型的数组元素被当做了object的属性,所以并不会影响到数组的length属性

4 字符串索引和数字索引函数的不同

示例如下:

var address = [‘shenzhen’, ‘guangzhou’];

//address 可以作为数组操作 pop()等

var address1 = [];

address1[‘sz’] = ‘shenzhen’;

address1[‘gz’] = ‘guangzhou’;

//address1 不可以作为数组操作 pop()为undefined

所以,如果是字符串属性,就要小心操作,最好直接

把数组声明成对象来操作!

文章来源:智云一二三科技

文章标题:奇怪的javascript数组的length属性

文章地址:https://www.zhihuclub.com/190688.shtml

关于作者: 智云科技

热门文章

网站地图