繁体   English   中英

在JS数组中使用字符串键分配值的方式和方式为何?

[英]How and why does assigning values with string keys work in JS arrays?

参见以下代码:

 var arr = []; arr.foo = 'bar'; console.log(arr.foo); 

现在,我们看到arr.foo不会引发错误并且可以工作,但是从技术上讲它应该引发错误,所以为什么不这样做呢?

另外,上述内容如何在内存中表示,考虑到数组块大多是在连续位置分配了带有偏移索引的内存,这在这里如何工作?

从技术上讲它应该抛出一个错误

不,它完全按照规范中的描述工作。

之所以可以使用它,是因为标准的JavaScript数组并不是真正的数组 ,*只是由Array.prototype支持的对象,具有特殊的length属性和对根据规范作为数组索引的属性名称的特殊处理。 具有任何其他名称的属性只是普通的对象属性,而不是数组条目。

由于数组是对象,因此它们可以具有非数组输入属性,就像其他任何对象一样。

FWIW,数组索引的定义是:

整数索引是一个字符串值的属性键,它是规范的数字字符串(请参见7.1.16),其数值为+0或正整数≤2 53 -1。 数组索引整数索引,其数值i在+0≤i <2 32 -1的范围内。

注意, 类型化数组是真实数组; 但是它们也是对象,您也可以向它们添加非数组输入属性。


* (这是我贫乏的小博客上的帖子)

数组是对象,您可以在编写时将不同种类的对象放入字符串之类的对象中,例如字典,字典,其他一般对象等。

arr.foo="bar"

您正在为名称访问foo输入值“ bar”。 您的变量arr现在是

 arr={foo:"bar"}

你可以,如果你想从这里W3C的更多信息检查TE页像你这样arr.foo访问https://www.w3schools.com/js/js_arrays.asp在部分数组对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM