关于JavaScript中的相等、全等操作符

1.相等操作符==,不相等操作符!=,会先转换操作数(通常称为强制转换类型),然后再比较它们的相等性;

  转换规则:根据不同的数据类型,有不同的转换;

  A.如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值。false转换,true转换为1.

  B.如果一个操作符是字符串,另一个操作数是数值,在比较相等性之前将字符串转换为数值;不能转换成数值的话,就flase;1=="a";//false; ---------1=="1";//true;-------true=="1";//true;---false=="1";//false;--true=="2";//false;

  C.如果一个操作符是对象,另一个操作符不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则比较;(null.valueOf();会报错,null没有属性!);  

    [] == false; // true;空数组调用valueOf()变成空字符
    [] == ![];   // true  ;

      typeof ![] 是布尔类型,false=== ![]返回true;  typeof []是Object类型

  这两个操作符在进行比较时遵循下列特殊规则:

    (a)、null和undefined是相等的。

    (b)、要比较相等性之前,不能将null和undefined转换成其他任何值。

    (c)、如果有一个操作数是NaN,则相等操作符返回false;不相等返回true.即使两个操作数都是NaN!

    (d)、如果两个操作数都是对象,则比较它们是不是同一个对象,如果都是指向同一个对象,OK相等就是true!否则返回false;

2.全等操作符===,不全等!==。在比较之前不转换操作数! 注意null ===undefined返回false,因为它们是不同的类型. object 与 undefined;

posted @ 2016-03-03 14:22  短短几年当校长  Views(285)  Comments(0)    收藏  举报