JavaScript中的数组是什么类型的列表?

时间:2016-04-15 12:00:43

标签: javascript

可能是一个愚蠢的问题,但我想知道JavaScript中数组背后的实现是什么?它们是SLL(单链表)还是DLL(双链表)或其他不同的东西?

4 个答案:

答案 0 :(得分:1)

你无法确切地说,它可能因实现(V8,Rhino等)而异,取决于当前编译器的开发者首选。

答案 1 :(得分:0)

取决于浏览器。为什么这很重要?

可能只是一个哈希表。

是的 - 这是一个愚蠢的问题

答案 2 :(得分:0)

Javascript数组只是简单的对象。

  

数组是类似列表的对象,其原型具有执行遍历和变异操作的方法。

来自MDN - array

编辑
作为@Alnitak的评论,上面的内容与 implementation 无关。 JS中Object的实现依赖于Javascript引擎。

答案 3 :(得分:0)

取自V8 object.h

// The JSArray describes JavaScript Arrays
//  Such an array can be in one of two modes:
//    - fast, backing storage is a FixedArray and length <= elements.length();
//       Please note: push and pop can be used to grow and shrink the array.
//    - slow, backing storage is a HashTable with numbers as keys.
class JSArray: public JSObject {

所以在V8中,最好的情况是在堆中分配的C ++数组或HashTable实现,它取决于解释器及其优化过程。