ECMAScript定義了3個乘性操作符:乘法(*)、除法(/)和求模(%)。操作數(shù)在非數(shù)值的情況下會執(zhí)行自動的類型轉(zhuǎn)換(后臺會先用Number()轉(zhuǎn)型函數(shù)將其轉(zhuǎn)換為數(shù)值)。
- 1. 乘法
var result = 34*56;
在處理特殊值的情況下,乘法操作符遵循下列特殊的規(guī)則:
- 如果操作數(shù)都是數(shù)值,執(zhí)行常規(guī)的乘法計算,如果乘積超過了ECMAScript數(shù)值的表示范圍,則返回
Infinity或-Infinity;
如果有一個是是
NaN,那么結(jié)果就是NaN;如果是
Infinity與0相乘,則結(jié)果是NaN;如果是
Infinity與非0相乘,則結(jié)果是Infinity或-Infinity;如果是
Infinity與Infinity相乘,則結(jié)果是Infinity;如果有一個操作數(shù)不是數(shù)值,則在后臺調(diào)用
Number()將其轉(zhuǎn)換為數(shù)值,然后在應(yīng)用上面的規(guī)則。2. 除法
var result = 66 / 11;
在處理特殊值的情況下,除法操作符遵循下列特殊的規(guī)則:
- 如果操作數(shù)都是數(shù)值,執(zhí)行常規(guī)的除法計算,如果商超過了ECMAScript數(shù)值的表示范圍,則返回
Infinity或-Infinity;
- 如果有一個是是
NaN,那么結(jié)果就是NaN; - 如果是
Infinity被Infinity除,則結(jié)果是NaN; - 如果是0被0除,則結(jié)果是
NaN; - 如果是非0的有限數(shù)被0除,則結(jié)果是
Infinity或-Infinity;
-如果是Infinity被任何非0數(shù)值除,則結(jié)果是Infinity或-Infinity; - 如果有一個操作數(shù)不是數(shù)值,則在后臺調(diào)用
Number()將其轉(zhuǎn)換為數(shù)值,然后在應(yīng)用上面的規(guī)則。
- 3. 求模
var result = 26 % 5; //1
在處理特殊值的情況下,求模操作符遵循下列特殊的規(guī)則:
- 如果操作數(shù)都是數(shù)值,執(zhí)行常規(guī)的除法計算,返回除得的余數(shù);
- 如果被除數(shù)是無窮大而除數(shù)是有限大數(shù)值,則結(jié)果是
NaN; - 如果被除數(shù)是有限大而除數(shù)是0,則結(jié)果是
NaN; - 如果是
Infinity被Infinity除,則結(jié)果是NaN; - 如果被除數(shù)是有限大而除數(shù)是無窮大數(shù)值,則結(jié)果是被除數(shù);
-如果被除數(shù)是0,則結(jié)構(gòu)是0; - 如果有一個操作數(shù)不是數(shù)值,則在后臺調(diào)用
Number()將其轉(zhuǎn)換為數(shù)值,然后在應(yīng)用上面的規(guī)則。