当前位置: 首页 > news >正文

对象转原始值

step1 寻找对象中有无[Symbol.toPrimitive]方法,若没有,进行下一步

如果有,调用该方法
1.若该方法的返回值是原始值,则使用该原始值作为转换结果

const a = {[Symbol.toPrimitive]() {return 1}
}console.log(+a) // 打印1

2.若该方法无返回值,则该对象转原始值的结果为NANundefined

const a = {[Symbol.toPrimitive]() {}
}console.log(+a) //打印NAN
console.log(''+a) //打印undefined

3.若该方法的返回值不是原始值(比如对象),则报错

const a = {[Symbol.toPrimitive]() {return {}}
}console.log(+a) // 直接报错TypeError: Cannot convert object to primitive value

step2 寻找对象中有无valueOf方法,若没有,进行下一步

如果有,调用该方法
1.若该方法的返回值是原始值,则使用该原始值作为转换结果

const a = {valueOf () {return 2}
}console.log(+a) // 打印2

2.若返回值不是原始值,进入下一步(不会报错)


step3 寻找对象中有无toString方法,若没有,直接报错

如果有,调用该方法
1.若该方法的返回值是原始值,则使用该原始值作为转换结果

const a = {toString() {return 1}
}console.log(+a)  //打印1

2.若返回值不是原始值,抛出异常

http://www.aitangshan.cn/news/14.html

相关文章:

  • 通达信配色
  • I2C通信接口 VK2C22B 高抗干扰LED驱动段码液晶驱动芯片
  • 【自学嵌入式:stm32单片机】EXTI外部中断
  • Dify入门系列(1)| Dify 是什么?真能开启低代码 AI 应用开发?
  • 题解:P4368 [Code+#4] 喵呜
  • vue3 vue3-form-element表单生成工具
  • Codeforces 1042G Wafu! 题解 [ 绿 ] [ 数学 ] [ 线性 DP ] [ 前缀和 ] [ 暴力枚举 ]
  • 第二章:Linux基础命令
  • 题解:P4779 【模板】单源最短路径(标准版)
  • 事倍功半是蠢蛋39 cursor 报错user is unauthorized
  • 一个不错的AI写作工具
  • 2025CSP-S模拟赛33 比赛总结