Map和Set是ES6引入的原生集合类型:Map支持任意类型键、保留插入顺序、无原型污染;Set专注唯一值去重与存在性判断,性能优于数组。
Map 和 Set 是 ES6 引入的两种原生数据结构,不是语法糖,而是为解决传统对象和数组在特定场景下的短板而设计的真正集合类型。
普通对象只接受字符串或 Symbol 作键,而 Map 允许用对象、函数、数字甚至 NaN 当键——关键在于“引用相等”而非“值相等”。比如缓存 DOM 节点对应的状态、给某个配置对象绑定元数据,都天然适合用 Map。
Set 就是一个只存值、不存键的集合,自动去重,内部用哈希实现,has() 查找是 O(1),比数组 includes() 或 indexOf() 快得多。
、临时标记等“只需知道有没有”的场景如果只是静态配置,键固定且全是字符串,比如 {theme: 'dark', lang: 'zh'},普通对象更轻量、可序列化、IDE 支持更好。Map 没有字面量语法,不能直接 JSON.stringify(需手动转)。Set 也不适合需要索引访问或保持原始顺序但允许重复的场景——那还是该用数组。
WeakMap / WeakSet 是它们的弱引用版本,只接收对象键/值,适合做私有状态或避免内存泄漏,但不能遍历,也不适用于通用存储。
基本上就这些。