ECMAScript運算符_關系運算符&等性運算符&條件運算符&賦值運算符&逗號運算符

關系運算符

關系運算符小于、大于、小于等于和大于等于執行的是兩個數的比較運算,比較方式與算術比較運算相同。
每個關系運算符都返回一個布爾值:

常規比較方式

比較兩個字符串形式的數字時,比如:

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容