乘性:乘法,除法,取模,(特殊数字[Infinity,-Infinity,NaN,0]需要注意)
加性:加减法(同样特殊数字注意)
关系运算符执行的是比较运算。每个关系运算符都返回一个布尔值。
常规比较:数字与数字,字符串与字符串(按字符代码数值比较)
数字和字符串比较:先将字符串转为数字再比较
ECMAScript 提供了两套等性运算符:等号和非等号用于处理原始值,全等号和非全等号用于处理对象。
在 ECMAScript 中,等号由双等号(==)表示,当且仅当两个运算数相等时,它返回 true。非等号由感叹号加等号(!=)表示,当且仅当两个运算数不相等时,它返回 true。为确定两个运算数是否相等,这两个运算符都会进行类型转换。
执行类型转换的规则如下:
在比较时,该运算符还遵守下列规则:
重要提示:即使两个数都是 NaN,等号仍然返回 false,因为根据规则,NaN 不等于 NaN。
下表列出了一些特殊情况,以及它们的结果:
表达式 | 值 |
---|---|
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 |
等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是它们在检查相等性前,不执行类型转换。
全等号由三个等号表示(===),只有在无需类型转换运算数就相等的情况下,才返回 true。
例如:
var sNum = "66"; var iNum = 66; alert(sNum == iNum); //输出 "true" alert(sNum === iNum); //输出 "false"
在这段代码中,第一个 alert 使用等号来比较字符串 "66" 和数字 66,输出 "true"。如前所述,这是因为字符串 "66" 将被转换成数字 66,,然后才与另一个数字 66 进行比较。第二个 alert 使用全等号在没有类型转换的情况下比较字符串和数字,当然,字符串不等于数字,所以输出 "false"。
非全等号由感叹号加两个等号(!==)表示,只有在无需类型转换运算数不相等的情况下,才返回 true。
例如:
var sNum = "66"; var iNum = 66; alert(sNum != iNum); //输出 "false" alert(sNum !== iNum); //输出 "true"
这里,第一个 alert 使用非等号,把字符串 "66" 转换成数字 66,使得它与第二个运算数 66 相等。因此,计算结果为 "false",因为两个运算数是相等的。第二个 alert 使用的非全等号。该运算是在问:"sNum" 与 "iNum" 不同吗?这个问题的答案是:是的(true),因为 sNum 是字符串,而 iNum 是数字,它们当然不同。
条件运算符是 ECMAScript 中功能最多的运算符,它的形式与 Java 中的相同。
variable = boolean_expression ? true_value : false_value;
简单的赋值运算符由等号(=)实现,只是把等号右边的值赋予等号左边的变量。
每种主要的算术运算以及其他几个运算都有复合赋值运算符:
用逗号运算符可以在一条语句中执行多个运算。
例如:
var iNum1 = 1, iNum = 2, iNum3 = 3;
javascript学习笔记---ECMAScript运算符(乘性,加性,关系,等性,关系,赋值,逗号运算符),布布扣,bubuko.com
javascript学习笔记---ECMAScript运算符(乘性,加性,关系,等性,关系,赋值,逗号运算符)
原文:http://www.cnblogs.com/liule1225/p/3757051.html