可能是一个愚蠢的问题,但我想知道JavaScript中数组背后的实现是什么?它们是SLL(单链表)还是DLL(双链表)或其他不同的东西?
答案 0 :(得分:1)
你无法确切地说,它可能因实现(V8,Rhino等)而异,取决于当前编译器的开发者首选。
答案 1 :(得分:0)
取决于浏览器。为什么这很重要?
可能只是一个哈希表。
是的 - 这是一个愚蠢的问题
答案 2 :(得分:0)
Javascript数组只是简单的对象。
数组是类似列表的对象,其原型具有执行遍历和变异操作的方法。
编辑
作为@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实现,它取决于解释器及其优化过程。