一、乘法运算

如果运算数都是数字,执行常规的乘法运算。如果结果太大或太小,那么生成的结果就是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”