- 等值判断运算符:==,先判断类型是否相同,如果相同直接比较内容;如果是其他类型与number类型比较,或是其他类型之间相互比较,则会默认使用Number()函数将其他数据类型转换为number类型再比较内容:
- 布尔型的true会转换为1,false转换为0
- 数字字符串会转换为对应数字,其他字符串会转换为NaN
- 对象会自动转换为NaN,但Date()类会转换为对应时间戳
- NaN与任意数据比较都会返回false,包括NaN自身
var a = 1; var b = "1"; var c = true; var d = "true"; var e = "str"; var f = "str"; alert(a==b); //Number(b)返回1,与a相等 alert(a==c); //Number(c)返回1,与a相等 alert(a==d); //Number(d)返回NaN,与a不相等 alert(a==e); //Number(d)返回NaN,与a不相等 alert(b==e); //Number(b)返回1,Number(e)返回NaN,两者不等 alert(d==e); //d和e都转换为NaN,但是两个NaN比较也是false
- 等同判断运算符:===,先判断类型是否相同,类型不同返回false;类型相同则比较内容,内容不同则返回false,否则返回true
var a = 1; var b = "1"; var c = true; var d = "true"; var e = "str"; var f = "str"; alert(a===b); //false alert(a===c); //false alert(a===d); //false alert(a===e); //false alert(b===e); //false alert(d===e); //false alert(e===f); //true
- “null == undefined”:要比较相等性之前,不能将 null 和 undefined 转换成其他任何值,并且规定null 和 undefined 是相等的
- “null === undefined”:null属于Object类型,而undefined属于undefined类型