javascript - javascript中数组的长度是如何决定的?为什么这段代码中数组对象 person 的长度是 1?
问题描述
var person = [];
person.name = "Mr. White";
person.job= "Engineer";
person.push(5);
person.length 的答案是什么,为什么?
解决方案
数组在属性方面有一些特殊的行为.length
。正如规范所描述的:
每个 Array 对象都有一个不可配置的“length”属性,其值始终是小于 232的非负整数。“length”属性的值在数值上大于其名称为数组索引的每个属性的名称;每当创建或更改 Array 对象的自身属性时,都会根据需要调整其他属性以保持此不变性。具体来说,每当添加名称为数组索引的自己的属性时,“长度”属性的值就会改变
“数组索引”是 0 到 之间的整数2 ** 32 - 1
。
在person
数组的属性中,最高(也是唯一的)数组索引属性是5
您推送的属性,它位于索引 0 处。
var person = [];
person.name = "Mr. White";
person.job= "Engineer";
person.push(5);
console.log(person[0]); // 5
console.log(person.hasOwnProperty(0)); // true
console.log(person.hasOwnProperty(1)); // false
// so the highest array index property that exists is 0
因此,数组的长度是索引的一加:0 + 1
或1
。
和属性不是数组索引name
,job
因此在识别length
.
推荐阅读
- android - 如何从 Android Developer Console 上的应用列表中清除已删除的应用?
- python - 有没有办法添加叠加到散景图中突出显示基于 x 轴数据点的某些区域。见下图
- numpy - 从随机分布构建一个 numpy 数组,直到最后一列超过阈值
- c# - 如何将图像发送到 Rest API?
- angular - 试图了解 Angular 7 应用程序中的文件结构
- java - connerDb 方法代表什么?
- r - 谁能帮我在 rbacon 中添加一个衰退?它看起来很简单,但它总是抛出错误
- wordpress - 在 5.2.1 版(2019 年 5 月)中在 wordpress 中创建新帖子时如何证明段落块的合理性
- angular - Angular 7 HttpClient 获取请求未定义的响应
- javascript - 在 React 中返回数组时如何添加换行符?