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>
const map = new Map();
map.set('name', 'Alice');
map.set(42, null);
map.set(NaN, 'nan-value');
console.log(map.has('name')); // true
console.log(map.has(42)); // true
console.log(map.has(NaN)); // true
console.log(map.has('age')); // false
</script>
用 clear() 彻底清空整个 Map
clear() 不接收任何参数,调用后 Map 中所有键值对立即被移除,长度变为 0。
- 清空后,
map.size变为0,后续调用has()全部返回false - 它不释放 Map 对象本身,变量仍可继续
set()新数据 - 注意:没有“清空部分键”的内置方法,如需删特定项,用
delete(key) - 示例:
<script>
const map = new Map([['a', 1], ['b', 2]]);
console.log(map.size); // 2
map.clear();
console.log(map.size); // 0
console.log(map.has('a')); // false
</script>
常见配合场景
实际开发中常组合使用:
立即学习“Java免费学习笔记(深入)”;
- 避免重复设置:先
has()判断,再决定是否set() - 状态重置:表单提交或切换页面时,用
clear()清掉缓存的临时映射 - 内存敏感逻辑:长期运行的 Map 若不再需要旧数据,及时
clear()避免泄漏 - 测试隔离:单元测试中,每个用例开始前
clear()确保 Map 干净


















