You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript Set delete方法疑问:常量引用与模板字面量调用差异

Set.delete()方法的类型匹配问题解答

核心逻辑:Set用严格相等判断元素

Set的delete()、has()等方法,都是基于**严格相等运算符(===)**匹配元素的——会同时检查值的内容和数据类型,只有两者完全一致时才会匹配成功。

针对你的问题逐一拆解

  1. 直接传someConst.id返回false
    someConst.id是数值类型的122,但你的Set里存储的是字符串类型的'122',122 === '122'结果为false,所以delete()找不到对应元素,返回false。

  2. 模板字面量${someConst.id}返回true
    模板字面量插值时会自动把数值类型的someConst.id转为字符串,等价于执行String(someConst.id),最终得到字符串'122',和Set里的元素严格相等,因此delete()成功返回true。

  3. 硬编码'122'返回true
    硬编码的'122'本身就是字符串类型,和Set中存储的元素完全一致,严格相等成立,所以delete()可以成功删除。

  4. 带引号的拼接(如"'"+someConst.id+"'")返回false
    这种方式得到的是带单引号的字符串'122'(单引号是字符串内容的一部分),但你的Set里的元素是不带单引号的'122',两者内容不匹配,严格相等不成立,因此delete()失败。

总结

Set的方法会严格检查数据类型和值的内容,只有两者完全匹配时才会执行成功。你的问题本质是数值与字符串的类型不匹配,模板字面量的自动类型转换刚好解决了这个问题。

内容的提问来源于stack exchange,提问作者Barbicane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 02:37:17