javascript逻辑非或者if条件判断或都数字运算等都会发生自动转换,分类总结如下:
1、逻辑非的自动转换
事实上跟!Boolean(v)的结果一样
(1)Boolean:true->true,false->false
(2)String:任何非空字符->true,""->false
(3)Number:任何非零字符(包括无穷大)->true,0和NaN->false
(4)Object:任何对象->true,null->false
(5)Undifined:undefined->false
alert(!false);//true alert(!true);//false alert(!null);//true alert(!undefined);//true alert(!"");//true alert(!"abc");//false alert(!{});//false alert(!function(){});//false alert(!0);//true alert(!NaN);//true alert(!Infinity);//false alert(!123);//false
2、数字与字符串的自动转换
(1)加号“+”,只要有一个操作数是字符串,会并接起来
alert(5+5);//10 alert("the sum of 5 and 5 is :"+(5+5));//the sum of 5 and 5 is :10 alert(5+"5");//55 alert("the sum of 5 and 5 is :"+5+5);//the sum of 5 and 5 is :55
(2)减号“-”,只要有一个操作数是字符串、布而值、null、undefined,后台自动调用Number()转换再进行计算
alert(8-true);//7,true自动转为1 alert(NaN-1);//NaN,只要有一个操作数为NaN,结果为NaN alert(5-4);//1 alert(5-"");//5,""自动转为0 alert(5-"2");//4,"2"自动转为1 alert(5-null);//5,null自动转为0
暂时总结以上几种,以后有空补上。