问答题520/1588说说你对 ToPrimitive 的理解

难度:
2023-04-25 创建

参考答案:

ToPrimitive 是一个抽象操作,用于将一个值转换为原始值(primitive value),即字符串、数字或布尔值。

在 JavaScript 中,当需要将一个非原始值用作原始值时,会自动调用 ToPrimitive 操作。例如,在使用加法运算符时,如果其中一个操作数不是原始值,则会将其转换为原始值,这就是通过调用 ToPrimitive 来实现的。

ToPrimitive 操作的实现方式如下:

  • 如果该值已经是原始类型,则直接返回该值。
  • 如果该值是对象,则按照以下步骤进行转换:
    • 调用 valueOf() 方法并返回结果,如果结果是原始类型则直接返回该结果。
    • 调用 toString() 方法并返回结果,如果结果是原始类型则直接返回该结果。
  • 如果都不是原始类型,则抛出 TypeError 异常。

示例:

1let obj = { 2 [Symbol.toPrimitive](hint) { 3 switch (hint) { 4 case 'number': 5 return 123; 6 case 'string': 7 return 'str'; 8 case 'default': 9 return 'default'; 10 default: 11 throw new Error(); 12 } 13 } 14}; 15 162 * obj // 246 173 + obj // '3default' 18obj == 'default' // true 19String(obj) // 'str'

最近更新时间:2024-08-10

赞赏支持

预览

题库维护不易,您的支持就是我们最大的动力!