Skip to main content

JavaScript 数组的本质

本质上,数组属于一种特殊的对象。

数组的特殊性体现在,它的键名是按次序排列的一组整数(0,1,2...)。

var arr = ["a", "b", "c"];

Object.keys(arr);
// ["0", "1", "2"]

JavaScript 语言规定,对象的键名一律为字符串,所以,数组的键名其实也是字符串。

之所以可以用数值读取,是因为非字符串的键名会被转为字符串。

var a = [];

a[1.0] = 6;
a[1]; // 6

对象有两种读取成员的方法:

  1. 点结构:object.key arr.0 的写法不合法,是因为单独的数值不能作为标识符(identifier)
  2. 方括号结构:object[key] 用方括号 arr[0] 可以,是因为方括号是运算符,可以接受数值

Length 属性

数组的 length 属性,返回数组的成员数量。

JavaScript 使用一个 32 位整数,保存数组的元素个数。

这意味着,数组成员最多只有 4294967295 个(2^32 - 1)个,也就是说 length 属性的最大值就是 4294967295。