ECMAScript 加性運(yùn)算符
在多數(shù)程序設(shè)計(jì)語(yǔ)言中,加性運(yùn)算符(即加號(hào)或減號(hào))通常是最簡(jiǎn)單的數(shù)學(xué)運(yùn)算符。
在 ECMAScript 中,加性運(yùn)算符有大量的特殊行為。
加法運(yùn)算符
法運(yùn)算符由加號(hào)(+)表示:
var iResult = 1 + 2
與乘性運(yùn)算符一樣,在處理特殊值時(shí),ECMAScript 中的加法也有一些特殊行為:
- 某個(gè)運(yùn)算數(shù)是 NaN,那么結(jié)果為 NaN。
- -Infinity 加 -Infinity,結(jié)果為 -Infinity。
- Infinity 加 -Infinity,結(jié)果為 NaN。
- +0 加 +0,結(jié)果為 +0。
- -0 加 +0,結(jié)果為 +0。
- -0 加 -0,結(jié)果為 -0。
不過(guò),如果某個(gè)運(yùn)算數(shù)是字符串,那么采用下列規(guī)則:
- 如果兩個(gè)運(yùn)算數(shù)都是字符串,把第二個(gè)字符串連接到第一個(gè)上。
- 如果只有一個(gè)運(yùn)算數(shù)是字符串,把另一個(gè)運(yùn)算數(shù)轉(zhuǎn)換成字符串,結(jié)果是兩個(gè)字符串連接成的字符串。
例如:
var result = 5 + 5; //兩個(gè)數(shù)字 alert(result); //輸出 "10" var result2 = 5 + "5"; //一個(gè)數(shù)字和一個(gè)字符串 alert(result); //輸出 "55"
這段代碼說(shuō)明了加法運(yùn)算符的兩種模式之間的差別。正常情況下,5+5 等于 10(原始數(shù)值),如上述代碼中前兩行所示。不過(guò),如果把一個(gè)運(yùn)算數(shù)改為字符串 "5",那么結(jié)果將變?yōu)?"55"(原始的字符串值),因?yàn)榱硪粋(gè)運(yùn)算數(shù)也會(huì)被轉(zhuǎn)換為字符串。
注意:為了避免 JavaScript 中的一種常見(jiàn)錯(cuò)誤,在使用加法運(yùn)算符時(shí),一定要仔細(xì)檢查運(yùn)算數(shù)的數(shù)據(jù)類型。
減法運(yùn)算符
減法運(yùn)算符(-),也是一個(gè)常用的運(yùn)算符:
var iResult = 2 - 1;
與加法運(yùn)算符一樣,在處理特殊值時(shí),減法運(yùn)算符也有一些特殊行為:
- 某個(gè)運(yùn)算數(shù)是 NaN,那么結(jié)果為 NaN。
- Infinity 減 Infinity,結(jié)果為 NaN。
- -Infinity 減 -Infinity,結(jié)果為 NaN。
- Infinity 減 -Infinity,結(jié)果為 Infinity。
- -Infinity 減 Infinity,結(jié)果為 -Infinity。
- +0 減 +0,結(jié)果為 +0。
- -0 減 -0,結(jié)果為 -0。
- +0 減 -0,結(jié)果為 +0。
- 某個(gè)運(yùn)算符不是數(shù)字,那么結(jié)果為 NaN。
注釋:如果運(yùn)算數(shù)都是數(shù)字,那么執(zhí)行常規(guī)的減法運(yùn)算,并返回結(jié)果。