js—双等号引起的类型转换过程

一、首先看双等号前后有没有NaN,如果存在NaN一律返回false

二、再看双等号前后有没有布尔,有布尔就将布尔转换为数字。(false是0,true是1)

三、接着看双等号前后有没有字符串,有三种情况:

  1. 对方是对象,对象使用toString()或者valueOf()进行转换;
  2. 对方是数字,字符串转换为数字;
  3. 对方是字符串,直接比较;
  4. 其它返回false;

四、如果是数字,对方是对象,对象取valueOf()或者toString()进行比较,其它一律返回false

五、null,undefined不会进行转换,但它们俩相等

 

练习题:

1 console.log([0] == true);         //false
2 console.log(0 == false);           //true
3 console.log(undefined == null);     //true
4 console.log('0' == undefinded);      //false

 

posted @ 2017-07-09 10:00  黄小黄的博客园  阅读(325)  评论(0编辑  收藏  举报