ECMAScript定义了3个乘性操作符:乘法(*)、除法(/)和求模(%)。操作数在非数值的情况下会执行自动的类型转换(后台会先用Number()
转型函数将其转换为数值)。
- 1. 乘法
var result = 34*56;
在处理特殊值的情况下,乘法操作符遵循下列特殊的规则:
- 如果操作数都是数值,执行常规的乘法计算,如果乘积超过了ECMAScript数值的表示范围,则返回
Infinity
或-Infinity
;
如果有一个是是
NaN
,那么结果就是NaN
;如果是
Infinity
与0相乘,则结果是NaN
;如果是
Infinity
与非0相乘,则结果是Infinity
或-Infinity
;如果是
Infinity
与Infinity
相乘,则结果是Infinity
;如果有一个操作数不是数值,则在后台调用
Number()
将其转换为数值,然后在应用上面的规则。2. 除法
var result = 66 / 11;
在处理特殊值的情况下,除法操作符遵循下列特殊的规则:
- 如果操作数都是数值,执行常规的除法计算,如果商超过了ECMAScript数值的表示范围,则返回
Infinity
或-Infinity
;
- 如果有一个是是
NaN
,那么结果就是NaN
; - 如果是
Infinity
被Infinity
除,则结果是NaN
; - 如果是0被0除,则结果是
NaN
; - 如果是非0的有限数被0除,则结果是
Infinity
或-Infinity
;
-如果是Infinity
被任何非0数值除,则结果是Infinity
或-Infinity
; - 如果有一个操作数不是数值,则在后台调用
Number()
将其转换为数值,然后在应用上面的规则。
- 3. 求模
var result = 26 % 5; //1
在处理特殊值的情况下,求模操作符遵循下列特殊的规则:
- 如果操作数都是数值,执行常规的除法计算,返回除得的余数;
- 如果被除数是无穷大而除数是有限大数值,则结果是
NaN
; - 如果被除数是有限大而除数是0,则结果是
NaN
; - 如果是
Infinity
被Infinity
除,则结果是NaN
; - 如果被除数是有限大而除数是无穷大数值,则结果是被除数;
-如果被除数是0,则结构是0; - 如果有一个操作数不是数值,则在后台调用
Number()
将其转换为数值,然后在应用上面的规则。