js中相等性问题

来源:互联网 发布:畅易阁抢号软件下载 编辑:程序博客网 时间:2024/06/06 03:04
    javascript中变量比较问题

    针对对象之间的比较,ECMAScript的解决方案是提供两组操作符:相等和不相等,全等和不全等.
    相等不相等与全等不全等的区别是什么?相等不相等,先对数据进行转换后比较(先转换后比较);
全等不全等,仅比较不转换.
    
    1.相等和不相等
    相等操作符是==,不相等操作符是!=.两者都会先强制转换操作数,然后再比较转换结果的相等性.
    转换不同的数据类型时,相等不相等遵循的(转换)原则是:
    a.如果有一个操作数是布尔类型,在比较之前将其转化为数值,false转换为0,true转化为1.(eg1)
    b.如果有一个操作符是字符串,另一个操作数是数值,在比较之前先将字符串转换为数字.  (eg2)
    c.如果有一个操作数是对象,另一个不是,则调用对象valueOf()方法,得到基本类型按照上面规则进行比较.(eg3)

    转换过后的遵循的比较规则是:
    a.null和undefined是相等的.  (eg4)
    b.在比较相等性之前,不能将null和undefined转化为其他任何值.(eg5)

    c.如果有一个操作数是NaN,那么相等操作符返回false,而不相等操作符返回true.重要提示:即使两个操作数都是NaN,返回值是false,NaN != NaN(规定)  (eg6)

    d.如果两个操作数都是对象,则比较它们是不是同一个对象,是则返回true,不是则返回false.  (eg7)

    转换规则:
    1.ture == 1 ,false == 0, "1" == 1, true != 2, "acd" != 2;
    比较规则:
    2.undefined != 0, null == undefined, NaN != 任何, NaN != NaN

   

    整理自javascript高级程序设计

0 0