Javascript只有六个假值(用在条件if的判断)
全等于
类型不同,返回false
类型相同,则
等于
类型相同:同上===
类型不同:尝试类型转换==【不是真值和假值的比较】
null == undefined
number == string(stirng转number)
boolean == ? (均转换为number)
object == number | string (将对象转换为基本类型)
其他:false
false只有和false,0,‘ ‘,[ ]比较为真
0只有和0,false,‘ ’,还有[ ]比较为真值
‘ ‘ 只有和0 , ‘ ’ ,false ,[]比较为真
[]和0,‘’,false比较为真值,与[]不是!!
null 与undefined
总结:
自己画的比较丑
一、首先看双等号前后有没有NaN,如果存在NaN,一律返回false。
二、再看双等号前后有没有布尔,有布尔就将布尔转换为数字。(false是0,true是1)
三、接着看双等号前后有没有字符串, 有三种情况:
1、对方是对象,对象使用toString()或者valueOf()进行转换;
2、对方是数字,字符串转数字;(前面已经举例)
3、对方是字符串,直接比较;
4、其他返回false
四、如果是数字,对方是对象,对象取valueOf()或者toString()进行比较, 其他一律返回false
五、null, undefined不会进行类型转换, 但它们俩相等
时间: 2024-10-14 19:30:44