JavaScript 中是否存在数组/列表?

Wha*_*ipt 1 javascript arrays hashmap javascript-objects

我想了解 JavaScript 中是否存在列表/数组而不是类似数组的对象。如果有一些关于这方面的资源或信息,我会很高兴。

所以根据我的理解,JavaScript 中的数组只是对象,数组的索引是对象中的键。但是对象的哈希映射正确吗?在这种情况下,哈希映射采用一个键,将其哈希到索引,然后将该值存储在列表/数组中的索引处。这样,如果我们需要访问对象中的键,我们可以轻松地散列键并在常数时间内访问数组以访问值。但是 JavaScript 中并不真正存在数组,那么 JavaScript 中是否存在一些我们无法访问的类似数组/列表的数据结构呢?

Jon*_*lms 5

JavaScript 是一种解释性语言。您可以用多种不同的语言编写有效的 JS 引擎,因此规范本身提供了一个非常抽象的内存模型。这意味着对象是键值对的集合,提供了访问这些对的方法,而数组是奇异的对象,它们以不同的方式对待数字键。就是这样,规范没有定义任何其他内容,因此如何在内存中实际表示它完全取决于引擎。

你是对的,尽管在内部将对象实现为哈希表(在某些情况下)并将数组实现为真正的数组或列表确实很有意义。大多数引擎使用不同的底层实现,具体取决于您使用对象/数组的方式。

值得一读:

v8 中的元素种类

v8 中的快速属性