javascript - Symbol.prototype 比较错误
问题描述
为什么我会收到此错误:
Uncaught TypeError: Symbol.prototype [ @@toPrimitive ] requires that 'this' be a Symbol
当我运行这段代码时?
3 == Symbol.prototype
我仍在尝试自己找出原因,到目前为止,我使用一个try-catch
块将其按住一段时间,但我想要一个错误的原因。
解决方案
3 == Symbol.prototype
执行以下操作(可能已知的部分保持简短):
尝试
Symbol.prototype
通过将其作为参数调用来强制转换为原语,ToPrimitive
而该参数又将使用Symbol.prototype[@@toPrimitive]
(this
设置为Symbol.prototype
)。这是由于松散的相等性进行强制并且第一个操作数是数字。Symbol.prototype[@@toPrimitive]
依次调用thisSymbolValue(this value)
。到这里就可以开始注意到问题了,this
不是Symbol。thisSymbolValue
当既不是 Symbol 也不是具有 [[SymbolData]] 的对象时,指定抛出 TypeError(没有更多细节,例如,您还会在 chrome 和 FF [1]上收到不同的消息)。this
[1]:我的 FF 60.0.1 上的“TypeError: [Symbol.toPrimitive] 方法在不兼容的对象上调用”
推荐阅读
- sql - 将 SQL 查询结果保存到表中
- stackblitz - 为什么我收到此错误 (new Set(...)).slice is not a function?
- r - 用于多元回归的深度神经网络
- python - 使用 loc 命令替换值
- c# - 如何将文本输出到文本框?
- c++ - 如何删除向量中的元素
通过一个参考 for 循环 - .htaccess - /var/www/html/ 附加到 url
- azure-devops - 错误:访问令牌来自错误的颁发者“https://sts.windows.net/***/”
- asp.net - 我们可以根据用户访问权限在网站上嵌入特定的 slack 通道吗?
- node.js - Json 无法读取未定义的属性