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

2018-10-23  本文已影响0人  5吖

if(xx)
对于if(xx),是把xx转换成boolean在进行判断
如果括号内是boolean,直接判断。否则括号里的表达式会被强制转换成boolean,转换规则如下:

1.if(number)
当 if(number),+0,-0,NaN会被转换为false,其他会被转换为true


1.jpg

2.if(string)
当 if(string),空字符串为false,其他为true


2.jpg

3.if(boolean)
当 if(boolean),直接判断


3.jpg

4.if(object)
当 if(object),转换为true


4.jpg

5.if(undefined)
当 if(undefined),转换为false


5.jpg

6.if(null)
当 if(null),转换为false


6.jpg

a==b
对于a==b,是将两边转换成数值进行判断
对于相同类型的a、b,相等的判断较简单。以下主要讨论不同数据类型的a、b之间进行相等运算时的判断

  1. string == number
    结果为 toNumber(a) == b ,当a无法转换为number时判断相等为false


    7.jpg
  2. boolean == (any)
    Boolean在相等运算时会转换为数值,true为1,false为0。

8.jpg
  1. object == number/string
    object会试图使用valueOf和toString转换后比较
9.jpg
  1. null == undefined //true
上一篇 下一篇

猜你喜欢

热点阅读