类型转换
这篇内容 让你很轻易的理解为什么结果是这样的?
Number([])==0;//true
String([1,2,3])=="1,2,3";//true
{}+[]==0;//true
[]+{}=="[object Object]";//true
"42"==true;//false
"42"==false;//false
类型转换大致分为显示类型转换和隐式类型转换,
显示类型转换
String(a)
String对基本类型值转换的规范定义:
String(null)=="null";
String(undefined)=="undefined";
String(true)=="true";
String(NaN)=="NaN";
String(123)=="123";
String对非基本类型值的转换定义:如果值不是基本类型的值,那么引擎会优先调用内部的方法对将该值转换为基本类型值,然后进行转换;
内部方法的执行顺序:优先执行 toString() 方法 ,如果该方法返回的是基本类型值,那么对该值进行转换,如果该方法返回非基本类型值,那么继续执行valueOf() 方法,拿到返回的基本类型值进行转换。
obj类型的toString方法,引擎默认返回"[object Object]"