JavaScript 映射表和哈希表

JavaScript Map and hash tables

我想这个问题以前没有人问过。关于Javascript地图:

var myMap = new Map();

Javascript Map 和散列 table 之间有什么关系? Map 是哈希 table 的实现吗?

来自the specification

Map object must be implemented using either hash tables or other mechanisms that, on average, provide access times that are sublinear on the number of elements in the collection.

所以这取决于 JavaScript 引擎的实施¹,但它 必须 以一种使用哈希表提供相同好处的方式实施,因此,使用哈希表将是一种明智的实现方式。该规范明确禁止实现 Map,这样查找条目涉及对元素进行线性搜索。


¹ 规范规定了 Map 对象的行为方式。 JavaScript 引擎(Chrome、Chromium 和 Node.js 中的 V8、Firefox 中的 SpiderMonkey、Safari 中的 JavaScriptCore、Edge 中的 Chakra...)实现了该行为。他们如何做到这一点取决于他们,前提是他们以符合规范的方式做到这一点。