目录
- let 和 const
- 声明变量的六种方式
- 数据结构
数据结构
Set
特性
它类似于数组,但是成员的值都是唯一的,不会添加重复的值
Set 函数可以接受一个数组作为初始化参数
Set 添加值不会发生自动类型转换,所以 5 和 ‘5’ 是两个不同的值,值的比较类似于 ===
并集:对于给定的两个集合,返回一个包含两个集合中所有元素的新集合。意思是x(元素)存在于A中,或x存在于B中
交集:对于给定的两个集合,返回一个包含两个集合***有元素的新集合。意思是x(元素)存在于A中,且x存在于B中
差集:对于给定的两个集合,返回一个包含所有存在与第一个集合且不存在与第二个集合的元素的新集合。意思是x(元素)存在于A中,且x不存在于B中
子集:验证一个给定集合是否是另一个集合的子集。意思是集合A中的每一个x(元素) ,也需要存在于B中
场景
对一组或多组集合内元素比较操作
WeakSet
特性
与 Set 类似,成员值都是唯一的,有两个区别:
- 成员只能是对象
- 值都是弱引用
弱引用即垃圾回收机制不考虑 WeakSet 对该对象的引用,因此何时回收不可预测同时 WeakSet 不可遍历
WeakSet 只能储存对象引用,不能存放值,而 Set 可以场景
适合临时存放一组对象或内存泄漏风险地方
Map
特性
提供“值-值”的数据结构存储形式,相比于Object”键-值”,没有键类型不能为对象的限制
Map 函数可接收数组为参数,该数组成员是一个个标识键值对的数组
场景
适合临时存放一组对象或内存泄漏风险地方
WeakMap
特性
与 Map 类似,提供“值-值”的数据结构存储形式,有两个区别:
- 成员只能是对象
- 值都是弱引用
弱引用即垃圾回收机制不考虑 WeakMap 对该对象的引用,因此何时回收不可预测同时 WeakMap 不可遍历
注意: WeakMap 弱引用的只是键名,而不是键值。键值依然是正常引用场景
适合临时存放一组对象或内存泄漏风险地方
总结
介绍下 Set、Map、WeakSet 和 WeakMap 的区别?
- Set 成员唯一,无序且不重复。“值-值”存储形式(或者说只有键值,没有键名)可以遍历
- WeakSet 成员都是对象引用,且成员是弱引用可被垃圾回收,可以用于保存DOM节点而不会造成内存泄漏。不能遍历
- Map “键-值”存储形式,可以遍历
- WeakMap 成员都是对象引用,键名是弱引用而键值是正常引用