關系運算符
關系運算符小于、大于、小于等于和大于等于執行的是兩個數的比較運算,比較方式與算術比較運算相同。
每個關系運算符都返回一個布爾值:
常規比較方式
比較兩個字符串形式的數字時,比如:
var bResult = "25" < "3";
alert(bResult); // 輸出 "true"
上面這段代碼比較的是字符串 "25" 和 "3"。兩個運算數都是字符串,所以比較的是它們的字符代碼("2" 的字符代碼是 50,"3" 的字符代碼是 51)。
不過,如果把某個運算數該為數字,那么結果就有趣了:
var bResult = "25" < 3; // 字符串"25"通過parseInt()轉換為數字
alert(bResult); // 輸出 "false"
無論何時比較一個數字和一個字符串,ECMAScript 都會把字符串轉換成數字,然后按照數字順序比較它們。
不過,如果字符串不能轉換成數字又該如何呢?考慮下面的例子:
var bResult = "a" < 3; // 字符串"a"通過parseInt()轉換為NaN
alert(bResult);
字母"a"不能轉換成有意義的數字。不過,如果對它調用parseInt()方法,返回的是NaN。根據規則,任何包含NaN的關系運算符都要返回false,因此這段代碼也輸出 false。
<br />
等性運算符
ECMAScript 提供了兩套等性運算符:等號和非等號用于處理原始值,全等號和非全等號用于處理對象。
等號和非等號(== & !=)
為確定兩個運算數是否相等,這兩個運算符都會進行類型轉換。
執行類型轉換的規則如下:
- 如果一個運算數是Boolean值,在檢查相等性之前,把它轉換成數字值。false轉換成0,true為 1。
- 如果一個運算數是字符串,另一個是數字,在檢查相等性之前,要嘗試把字符串轉換成數字(parseInt)。
- 如果一個運算數是對象,另一個是字符串,在檢查相等性之前,要嘗試把對象轉換成字符串(toString)。
- 如果一個運算數是對象,另一個是數字,在檢查相等性之前,要嘗試把對象轉換成數字(parseInt)。
在比較時,該運算符還遵守下列規則: - 值 null 和 undefined 相等。
- 在檢查相等性時,不能把null和undefined轉換成其他值。
- 如果某個運算數是NaN,等號將返回false,非等號將返回true。
- 如果兩個運算數都是對象,那么比較的是它們的引用值。如果兩個運算數指向同一對象,那么等號返回 true,否則兩個運算數不等。
<br />
全等號和非全等號(=== & !==)
這兩個運算符所做的與等號和非等號相同,只是它們在檢查相等性前,不執行類型轉換。
全等號由三個等號表示(===),只有在無需類型轉換運算數就相等的情況下,才返回true。
var sNum = "66";
var iNum = 66;
alert(sNum == iNum); // 輸出 "true"
alert(sNum === iNum); // 輸出 "false"
非全等號由感嘆號加兩個等號(!==)表示,只有在無需類型轉換運算數不相等的情況下,才返回true。
var sNum = "66";
var iNum = 66;
alert(sNum != iNum); // 輸出 "false"
alert(sNum !== iNum); // 輸出 "true"
<br />
條件運算符(?)
條件運算符是ECMAScript中功能最多的運算符,它的形式與Java中的相同。
variable = boolean_expression ? true_value : false_value;
如果Boolean_expression為true,就把true_value賦給變量;如果它是false,就把false_value賦給變量。
<br />
賦值運算符(=)
簡單的賦值運算符由等號(=)實現,只是把等號右邊的值賦予等號左邊的變量。
每種主要的算術運算以及其他幾個運算都有復合賦值運算符:
- 乘法/賦值(*=)
- 除法/賦值(/=)
- 取模/賦值(%=)
- 加法/賦值(+=)
- 減法/賦值(-=)
- 左移/賦值(<<=)
- 有符號右移/賦值(>>=)
- 無符號右移/賦值(>>>=)
<br />
逗號運算符(,)
用逗號運算符可以在一條語句中執行多個運算。
例如:
var iNum1 = 1, iNum = 2, iNum3 = 3;
<br />
更多請參考:W3School