if(xx)和xx==xx的判断

if 和 == 虽然都是通过布尔值来判断结果的,但是这两个判断方式的原理有不小的差距。

if(xx) 的判断方式

if 会将括号中的表达式强制转化为布尔值,然后根据转换的结果进行判断。

转换规则

类型 结果
Undefined false
Null false
Boolean 直接判断
Number +0, −0, 或者 NaN 为 false, 其他为 true
String 空字符串为 false,其他都为 true
Object true

== 的判断方式

== 在比较的时候,JavaScript 会自动帮我们进行类型转换,再进行比较运算。转换规则如下:

  • 如果两边值类型相同,就直接执行比较运算
  • 如果两个值类型不相等:
    • 如果一个是 null, 一个是 undefined ,那么返回 true
    • 如果一个是数字,一个是字符串,先将字符串转换为数字,然后比较
    • 如果一个值是布尔值,一个值为非布尔值,那么将布尔值转换为 0/1 ,然后比较
    • 如果一个值为对象,一个值为数字或者字符串,则尝试使用 valueOf 和 toString 进行转换后比较
    • 其它情况返回 false

你可能感兴趣的:(if(xx)和xx==xx的判断)