分析下面代码的执行流程。
var obj = {
value: 3,
valueOf() {
return 4;
},
toString() {
return '5'
},
}
+obj // 4
''+obj // '4'
`${obj}` // '5'
ToPrimitive 转换为原始值
Symbol.toPrimitive
原始值 primitive value 是 Undefined
, Null
, Boolean
, Number
, Symbol
, String
之一,原始值是直接在语言实现的最低级别表示的数据。
当对象要被转换为数字或者字符串时,将会涉及到 ToPrimitive ( input [ , PreferredType ] )
转换。
PreferredType
表示对象将要转换的类型-
PreferredType
未传递,则令hint
为default
PreferredType
为 String,则hint
为