Javascript--等性运算符

判断两个变量是否相等是程序设计中非常重要的运算,若是对原始值进行运算,则比较简单,但涉及到对象,则有点复杂.

ECMAScript提供了两套运算符处理这个问题:

  • 等号和非等号处理原始值
  • 全等号和非全等号处理对象

1.等号和非等号

等号由==表示.当且仅当两个运算数相等时,才返回true.

非等号由!=表示.当且仅当两个运算数不相等时,它返回false.

为了确定运算数是否相等,这两个运算符都会进行类型转换.类型转换基本规则如下:

  • 如果一个运算数是Boolean值,在检查相等性之前,会把它转换成数字值.true转换为1,false转换为0.
  • 如果一个运算数是数字,另一个运算数是字符串,则尝试将字符串转换为数字.
  • 如果一个运算数是数字,另一个运算数是对象,则尝试将对象转换为数字.
  • 如果一个运算数是字符串,另一个运算数是对象,则尝试将对象转换为字符串.
  • 不能将null和undefined转换成其他类型值.

运算符在进行比较时,遵循以下规则:

  • 值null与undefined相等
  • 如果某个运算数是NaN,等号返回false,非等号返回true.即使两个运算数都是NaN,等号仍返回false
  • 如果两个运算数都是对象,则比较的是它们的引用值.

对一些特殊值进行比较,前提代码:

        function display(value){
            document.write(value+"<br/>");
        }
        
        var obj1 = new Object();
        var obj2 = new Object();
        var obj3 = obj1;

结果:

比较式 结果
1=="1" true
1==false false
1==true true
2==true false
null==undefined true
1==NaN false
NaN==NaN false
NaN!=NaN true
obj1==obj2 false
obj1==obj3 true

2.全等号和非全等号

全等号由===表示.只有在无需类型转换运算数的情况下,才返回true.

非全等号由!==表示.

例子,前提代码:

        function display(value){
            document.write(value+"<br/>");
        }
        
        var obj1 = new Object();
        var obj2 = new Object();
        var obj3 = obj1;

结果:

比较式 结果
1==="1" false
1===false false
1===true false
2===true false
null===undefined false
1===NaN false
NaN===NaN false
NaN!==NaN true
obj1===obj2 false
obj1===obj3 true
posted @ 2009-12-24 13:09  Localhost  阅读(414)  评论(0编辑  收藏  举报