关于if(xx)和 a==b的判断

对于使用JS,经常会遇到使用if或者==等判断语句,来了解一下对于两种条件的基本转换

if(xx)

括号里的表达式会被强制转换成布尔类型进行判断
其余转换规则如下:

  • Undefined转换为false
  • Null转换为false
  • Boolean 直接判断
  • Number:+0,-0,NaN会被转换为false,其他会被转换为true
  • String:空字符串为false,其他为true
  • Object:转换为true

在进行&&``||判断的时候,同样nullNaNundefined“”0-0false;这七个是flase

a==b

== 不是严格相等,所以在使用 == 的时候会在一定程度上改变原值的类型:

  • Undefined=Null
  • a和b中有数字类型或者布尔类型,都转换为数字进行判断比较
  • 如果一个为对象,一个为字符串或者数字,把对象转换为数字进行比较判断
  • Undefined转换为NaN
  • Null转换为0
  • 布尔类型:true转换为1,false转换为0
  • 字符串:非数字字符串转为NaN,数字字符串转为数字值
  • 对于object对象,先调用.valueof,没有再调用.tostring

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