首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

2.9.7  等性运算符

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

1. 等号和非等号

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

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

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

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

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

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

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

q  nullundefined相等。

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

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,因为两个运算数被看作是相等的。第二个警告使用的是非全等号。该运算是在问:“sNumiNum不同吗?”这个问题的答案是:“是的(true)”,因为sNum是字符串,而iNum是数字,它们当然不同。

2.9.8  条件运算符

条件运算符是ECMAScript中功能最多的运算符,它的形式与Java中的相同:

该表达式主要是根据boolean_expression的计算结果有条件的为变量赋值。如果boolean_expressiontrue,就把true_value赋给变量,如果它是false,就把false_value赋给变量。例如:

在这个例子中,iMax将被赋予数字中的最大值。表达式声明如果iNum1大于iNum2,则把iNum1赋予iMax。但如果表达式为false(即iNum2大于或等于iNum1),则把iNum2赋予iMax

2.9.9  赋值运算符

简单的赋值运算由等号(=)实现,只是把等号右边的值赋予等号左边的变量。例如:

复合赋值运算是由乘性运算符、加性运算符或位移运算符加等号(=)实现的。这些赋值运算符是下列这些常见情况的缩写形式:

可以用一个复合赋值运算符改写第二行代码:

每种主要的算术运算以及其他几个运算都有复合赋值运算符:

q  乘法/赋值(* =);

q  除法/赋值(/=);

q  取模/赋值(%=);

q  加法/赋值(+=);

q  减法/赋值(-=);

q  左移/赋值(<<=);

q  有符号右移/赋值(>>=);

q  无符号右移/赋值(>>>=)。

2.9.10  逗号运算符

用逗号运算符可以在一条语句中执行多个运算。例如:

逗号运算符最常用于变量声明中。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论