判断两个变量是否相等是程序设计中非常重要的运算。在处理原始值时,这种运算相当简单,但设计对象,任何就稍微有点复杂。JavaScript提供了两套运算符处理这个问题,等号和非等号用户处理原始值;全等号和非全等号用于处理对象。

   在JavaScript中,等号由双等号(==)表示当且仅当两个运算数相等时,它返回true非等号是感叹号加等号(!=),当且仅当两个运算数不相等时,它返回true。为确定两个运算数是否相等,这两个运算符都会进行类型转换。

执行类型转换的基本规则如下:

   如果一个运算数是Boolean值,在检查相等性之前,把它转换成数字值。false转换成0,true转换成1。

   如果一个运算数是字符串,另一是数字,在检查相等性之前,要尝试把字符串转换成数字。

   如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串(调用toString()方法)。

   如果一个运算数是对象,另一是数字,在检查相等性之前,要尝试把对象转换成数字。

在进行比较时,该运算符还遵守下列规则:

   值null和undefined相等。

   在检查相等性时,不能把null和undenfined转换成其他值。

   如果某个运算数是NaN,等号将返回false,非等号将返回true。重要提示:即使连个运算数都是NaN,等号仍然返回false,因为根据规则,NaN不等于NaN。

   如果两个运算数都是对象,那么比较的是他们的引用值。如果两个运算数指向同一个对象,那么等号返回true,否则两个运算数不等。

下面的比较列出了一些特殊的情况以及它们的结果:

   null == undefined   //结果为:true

   "NaN" == NaN   //结果为:false

   5== NaN   //结果为:false

   NaN == NaN   //结果为:false

   NaN != NaN   //结果为:true

   false == 0   //结果为:true

   true == 1   //结果为:true

   true == 2   //结果为:false

   undefined == 0   //结果为:false

   null == 0   //结果为:false

   "5" == 5   //结果为:true

posted on 2010-04-12 17:22  信封牛  阅读(768)  评论(0编辑  收藏  举报