其他值转数字
Undefined -> NaN
Null -> 0
Boolean true->1 false-> 0
String 调用Number()函数进行转换,若包含非数字值返回NaN,空字符串返回0
Symbol 类型的值不能转换为数字,会报错。
对象(包括数组)会首先被转换为相应的基本类型值,如果返回的是非数字的基本类型值,则再遵循以上规则将其强制转换为数字。
为了将值转换为相应的基本类型值,抽象操作 ToPrimitive 会首先(通过内部操作 DefaultValue)检查该值是否有valueOf()方法。如果有并且返回基本类型值,就使用该值进行强制类型转换。如果没有就使用 toString() 的返回值(如果存在)来进行强制类型转换。
如果 valueOf() 和 toString() 均不返回基本类型值,会产生 TypeError 错误。
其他值转字符串
null -> 'null'
undefined -> 'undefined'
Boolean:true->'true',false->'false'
Number类型的值直接转化,不过极大或极小的数会使用指数形式
Symbol 类型的值直接转换,但是只允许显式强制类型转换,使用隐式强制类型转换会产生错误。
普通对象:除非自行定义 toString() 方法,否则会调用 toString()(Object.prototype.toString())来返回内部属性 [[Class]] 的值,如"[object Object]"。如果对象有自己的 toString() 方法,字符串化时就会调用该方法并使用其返回值。
其他值转Boolean
null,undefined,NaN,0,false,""为false,其余均为true