javascript中的==与===

判断两个变量是否相等是程序设计中非常重要的运算。在处理原始值时,这种运算相当简单,但涉及对

象,任务就稍有点复杂。ECMAScript提供了两套运算符处理这个问题,等号和非等号用于处理原始值,

全等号和非全等号用于处理对象。

1. 等号和非等号

在ECMAScript中,等号由双等号(= =)表示,当且仅当两个运算数相等时,它返回true。非等号是感

叹号加等号(!=),当且仅当两个运算数不相等时,它返回true。为确定两个运算数是否相等,这两个

运算符都会进行类型转换。

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

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

1。

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

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

toString()方法)。

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

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

q  值null和undefined相等。

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

q  如果某个运算数是NaN,等号将返回false,非等号将返回true。重要提示:即使两个运算数都是NaN

,等号仍然返回false,因为根据规则,NaN不等于NaN。

q  如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一个对象,那么等

号返回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
 


2. 全等号和非全等号

等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是它们

在检查相等性前,不执行类型转换。全等号由三个等号(= = =)表示,只有在无需类型转换运算数就

相等的情况下,才返回true。例如:

 

在这段代码中,第一个警告使用等号比较字符串"55"和数字55,输出"true"。如前所述,这是因为字符

串"55"将被转换成数字55,然后才与另一个数字55进行比较。第二个警告使用全等号在没有类型转换的

情况下比较字符串和数字,当然,字符串不等于数字,所有输出"false"。

非全等号由感叹号加两个等号(!= =)表示,只有在无需类型转换运算数不相等的情况下,才返回true

。例如:

 

这里,第一个警告使用非等号,把字符串"55"转换成数字55,使得它与第二个运算数55相等。因此,计

算结果为false,因为两个运算数被看作是相等的。第二个警告使用的是非全等号。该运算是在问:

“sNum与iNum不同吗?”这个问题的答案是:“是的(true)”,因为sNum是字符串,而iNum是数字,

它们当然不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值