一、乘法运算
如果运算数都是数字,执行常规的乘法运算。如果结果太大或太小,那么生成的结果就是Infinity或 -Infinity
(1)如果某个运算数是NaN,结果为NaN
(2)Infinity乘以0,结果为NaN
(3)Infinity乘以0以外的数字,结果为Infinity或-Infinity,由第二个运算数的符号决定
(4)Infinity乘以Infinity,结果为Infinity
二、除法运算符
如果运算数都是数字,执行常规的乘法运算。如果结果太大或太小,那么生成的结果就是Infinity或 -Infinity
(1)如果某个运算数是NaN,结果为NaN
(2)Infinity被Infinity除,结果为NaN
(3)Infinity被任何数字除,结果为Infinity
(4)0除一个非无穷大的数字,结果为NaN
(5)Infinity被0以外的任何数字除,结果为Infinity或-Infinity,由第二个运算数的符号决定
三、取模运算符
(1)如果运算数都是数字,执行常规的算术除法运算,返回除法运算得到的余数
(2)如果被除数是Infinity,或者除数是0,结果为NaN
(3)Infinity被Infinity除,结果为NaN
(4)如果除数是无穷大的数,结果为被除数
(5)如果除数为0,结果为0
四、加法运算符
(1)某个运算数是NaN,结果为NaN
(2)Infinity加Infinity,结果为Infinity
(3)-Infinity加-Infinity,结果为-Infinity
(4)Infinity加-Infinity,结果为NaN
(5)+0加+0,结果为+0
(6)-0加+0,结果为+0
(7)-0加-0,结果为-0
(8)对于字符串,进行连接操作
五、减法运算符
(1)某个运算数是NaN,结果为NaN
(2)Infinity减Infinity,结果为NaN
(3)-Infinity减-Infinity,结果为NaN
(4)Infinity减-Infinity,结果为Infinity
(5)-Infinity减Infinity,结果为-Infinity
(6)+0减+0,结果为+0
(7)-0减-0,结果为-0
(8)+0减-0,结果为+0
(9)某个运算数不是数字,结果为NaN
六、等号(==)和非等号(!=)
(1)如果一个运算数是Boolean值,在检查相等性之前,把它转换成数字值。false转换为0,true转换为1
(2)如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字
(3)如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串(调用toString()方法)
(4)如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字
此外,在进行比较时,还遵循以下规则:
(1)值null和undenfined相等(null==undefined为true,nul===undefined为false)
(2)在检查相等性时,不能把null和undenfined转换成其他值
(3)如果某个运算数是NaN,等号将返回false,非等号将返回true。(即使两个运算数都是NaN,等号仍然返回false,因为根据规则,NaN不等于NaN)
(4)如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一个对象,那么等号返回true,否则两个运算数不等。
综合:
表达式 | 值 |
null == undenfined | true |
“NaN” == NaN | false |
5 == NaN | false |
NaN == NaN | false |
NaN != NaN | true |
false == 0 | true |
true == 1 | true |
true == 2 | false |
undenfined ==0 | false |
null == 0 | false |
“5” == 5 | true |
七、全等号(===)和非全等号(!==)
它们的运算跟等号与非等号相同,只是它们在检查相等性前,不执行类型转换,即只有在无需类型转换运算数就相等的情况下,才返回true。
例:
var sNum = “55”;
var iNum = 55;
alert(sNum == iNum); //输出“true”
alert(sNum === iNum); //输出“false”