变量类型转换:
1)字符串拼接
例如:var a = "1"+2; a的变量类型为String类型,与字符串相加拼接时会转成字符串类型。
2)==运算符
一、首先看双等号前后有没有NaN,如果存在NaN,一律返回false。
二、再看双等号前后有没有布尔,有布尔就将布尔转换为数字。(false是0,true是1)
三、接着看双等号前后有没有字符串, 有三种情况:
1、对方是对象,对象使用toString()或者valueOf()进行转换;
2、对方是数字,字符串转数字;(前面已经举例)
3、对方是字符串,直接比较;
4、其他返回false
四、如果是数字,对方是对象,对象取valueOf()或者toString()进行比较, 其他一律返回false
五、null, undefined不会进行类型转换, 但它们俩相等
上面的转换顺序一定要牢记,面试的时候,经常会出现类型的问题。
3)if语句
if(a){
}
逻辑对象a无初始值或者其值为 0、-0、null、""、false、undefined 或者 NaN,那么if判断 false ,其他为true
4)逻辑运算符
&& :首先&&运算有返回值,返回的是第一个if()转换为false的值,否则返回最后一个值。其类型转换与if一致,但是返回的是其实际的值,不是转换后的bool值。
||:||运算返回的是第一个为类型转换后为true的值,否则返回最后一个的值与&&一样。
!:!!a和if(a)一样转换成对应的bool值。