长度属性JS

时间:2016-09-18 04:22:37

标签: javascript arrays node.js typescript

我遇到了这个用于在数组中保持正向和反向引用的代码:

var arr = [];
arr[arr['A'] = 0] = 'A';
arr[arr['B'] = 1] = 'B';

// On node interpreter
arr        // [ 'A', 'B', A: 0, B: 1 ]
arr["A"]   // 0
arr["B"]   // 1
arr[0]     // 'A'
arr[1]     // 'B'
arr[2]     // 'undefined'
arr.length // 2

A: 0, B: 1成员被推到数组的末尾。

这些成员是什么以及在此过程中发生了什么,以便.length属性记录2而不是4?

2 个答案:

答案 0 :(得分:1)

使用字符串键将值存储到数组中实际上不会修改数组。它只向Array对象添加动态字段,而不像使用数字索引存储,实际上将值推入数组中。Array.length仅反映数组中元素的数量,由数组,但不是数组中动态字段的数量。

答案 1 :(得分:0)

var arr = [];
arr["A"] = 2;

在这里,您要向数组对象添加一个属性,该属性不会反映数组中元素的数量。在javascript中,数组元素始终使用索引存储。 Array.length始终返回存储在数组中的元素数。