map的has()用于判断键是否存在,返回布尔值,支持nan键和引用相等;clear()用于清空所有键值对,无参数,返回undefined,调用后size为0且has()全返回false。

Map 的 has() 用于判断键是否存在,clear() 用于彻底清空所有键值对,两者都无返回值(clear() 返回 undefined)。
用 has() 检测某个键是否已存在
has(key) 接收一个参数(即要查找的键),严格比较(使用 SameValueZero 算法,支持 NaN 作为键),返回布尔值。
- 即使键对应值为
undefined或null,只要键存在,has()仍返回true - 对象、函数、Symbol 作键时,需用**同一引用**才能命中(因为是引用相等判断)
- 示例:
<script><br> const map = new Map();<br> map.set('name', 'Alice');<br> map.set(42, null);<br> map.set(NaN, 'nan-value');<br> <br> console.log(map.has('name')); // true<br> console.log(map.has(42)); // true<br> console.log(map.has(NaN)); // true<br> console.log(map.has('age')); // false<br> </script>
用 clear() 彻底清空整个 Map
clear() 不接收任何参数,调用后 Map 中所有键值对立即被移除,长度变为 0。
- 清空后,
map.size变为0,后续调用has()全部返回false - 它不释放 Map 对象本身,变量仍可继续
set()新数据 - 注意:没有“清空部分键”的内置方法,如需删特定项,用
delete(key) - 示例:
<script><br> const map = new Map([['a', 1], ['b', 2]]);<br> console.log(map.size); // 2<br> map.clear();<br> console.log(map.size); // 0<br> console.log(map.has('a')); // false<br> </script>
常见配合场景
实际开发中常组合使用:
- 避免重复设置:先
has()判断,再决定是否set() - 状态重置:表单提交或切换页面时,用
clear()清掉缓存的临时映射 - 内存敏感逻辑:长期运行的 Map 若不再需要旧数据,及时
clear()避免泄漏 - 测试隔离:单元测试中,每个用例开始前
clear()确保 Map 干净
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











