试图获得数组长度

Aju*_*ohn 3 javascript arrays

见下面给出的情景

var x = [];
x['abc'] = "hello";
console.log(x.length); //returns 0

var x = [1,2];
x['abc'] = "hello";
console.log(x.length); //returns 2
Run Code Online (Sandbox Code Playgroud)

这背后的任何原因或我错过了什么?

gur*_*372 5

根据规格

length属性的值在数值上大于名称为数组索引的每个属性的名称 ; 无论何时创建或更改Array对象的自有属性,都会根据需要调整其他属性以保持此不变量.

进一步

具体来说,每当添加名称为数组索引的属性时,都会更改length属性的值.

因此,当创建名称为数组索引的属性时,将调整length属性,然后只更改length属性.

'abc'添加到数组时,它是非数字(因此不是数组的索引),不会反映length属性的任何变化.