ECMAScript運(yùn)算符_關(guān)系運(yùn)算符&等性運(yùn)算符&條件運(yùn)算符&賦值運(yùn)算符&逗號(hào)運(yùn)算符

關(guān)系運(yùn)算符

關(guān)系運(yùn)算符小于、大于、小于等于和大于等于執(zhí)行的是兩個(gè)數(shù)的比較運(yùn)算,比較方式與算術(shù)比較運(yùn)算相同。
每個(gè)關(guān)系運(yùn)算符都返回一個(gè)布爾值:

常規(guī)比較方式

比較兩個(gè)字符串形式的數(shù)字時(shí),比如:

var bResult = "25" < "3";
alert(bResult);             // 輸出 "true"

上面這段代碼比較的是字符串 "25" 和 "3"。兩個(gè)運(yùn)算數(shù)都是字符串,所以比較的是它們的字符代碼("2" 的字符代碼是 50,"3" 的字符代碼是 51)。
不過,如果把某個(gè)運(yùn)算數(shù)該為數(shù)字,那么結(jié)果就有趣了:

var bResult = "25" < 3;     // 字符串"25"通過parseInt()轉(zhuǎn)換為數(shù)字
alert(bResult);             // 輸出 "false"

無論何時(shí)比較一個(gè)數(shù)字和一個(gè)字符串,ECMAScript 都會(huì)把字符串轉(zhuǎn)換成數(shù)字,然后按照數(shù)字順序比較它們。
不過,如果字符串不能轉(zhuǎn)換成數(shù)字又該如何呢?考慮下面的例子:

var bResult = "a" < 3;      // 字符串"a"通過parseInt()轉(zhuǎn)換為NaN
alert(bResult);

字母"a"不能轉(zhuǎn)換成有意義的數(shù)字。不過,如果對(duì)它調(diào)用parseInt()方法,返回的是NaN。根據(jù)規(guī)則,任何包含NaN的關(guān)系運(yùn)算符都要返回false,因此這段代碼也輸出 false。
<br />

等性運(yùn)算符

ECMAScript 提供了兩套等性運(yùn)算符:等號(hào)和非等號(hào)用于處理原始值,全等號(hào)和非全等號(hào)用于處理對(duì)象。

等號(hào)和非等號(hào)(== & !=)

為確定兩個(gè)運(yùn)算數(shù)是否相等,這兩個(gè)運(yùn)算符都會(huì)進(jìn)行類型轉(zhuǎn)換。
執(zhí)行類型轉(zhuǎn)換的規(guī)則如下:

  • 如果一個(gè)運(yùn)算數(shù)是Boolean值,在檢查相等性之前,把它轉(zhuǎn)換成數(shù)字值。false轉(zhuǎn)換成0,true為 1。
  • 如果一個(gè)運(yùn)算數(shù)是字符串,另一個(gè)是數(shù)字,在檢查相等性之前,要嘗試把字符串轉(zhuǎn)換成數(shù)字(parseInt)。
  • 如果一個(gè)運(yùn)算數(shù)是對(duì)象,另一個(gè)是字符串,在檢查相等性之前,要嘗試把對(duì)象轉(zhuǎn)換成字符串(toString)。
  • 如果一個(gè)運(yùn)算數(shù)是對(duì)象,另一個(gè)是數(shù)字,在檢查相等性之前,要嘗試把對(duì)象轉(zhuǎn)換成數(shù)字(parseInt)。
    在比較時(shí),該運(yùn)算符還遵守下列規(guī)則:
  • 值 null 和 undefined 相等。
  • 在檢查相等性時(shí),不能把null和undefined轉(zhuǎn)換成其他值。
  • 如果某個(gè)運(yùn)算數(shù)是NaN,等號(hào)將返回false,非等號(hào)將返回true。
  • 如果兩個(gè)運(yùn)算數(shù)都是對(duì)象,那么比較的是它們的引用值。如果兩個(gè)運(yùn)算數(shù)指向同一對(duì)象,那么等號(hào)返回 true,否則兩個(gè)運(yùn)算數(shù)不等。
    <br />

全等號(hào)和非全等號(hào)(=== & !==)

這兩個(gè)運(yùn)算符所做的與等號(hào)和非等號(hào)相同,只是它們?cè)跈z查相等性前,不執(zhí)行類型轉(zhuǎn)換。
全等號(hào)由三個(gè)等號(hào)表示(===),只有在無需類型轉(zhuǎn)換運(yùn)算數(shù)就相等的情況下,才返回true。

var sNum = "66";
var iNum = 66;
alert(sNum == iNum);    // 輸出 "true"
alert(sNum === iNum);   // 輸出 "false"

非全等號(hào)由感嘆號(hào)加兩個(gè)等號(hào)(!==)表示,只有在無需類型轉(zhuǎn)換運(yùn)算數(shù)不相等的情況下,才返回true。

var sNum = "66";
var iNum = 66;
alert(sNum != iNum);    // 輸出 "false"
alert(sNum !== iNum);   // 輸出 "true"

<br />

條件運(yùn)算符(?)

條件運(yùn)算符是ECMAScript中功能最多的運(yùn)算符,它的形式與Java中的相同。

variable = boolean_expression ? true_value : false_value;

如果Boolean_expression為true,就把true_value賦給變量;如果它是false,就把false_value賦給變量。
<br />

賦值運(yùn)算符(=)

簡(jiǎn)單的賦值運(yùn)算符由等號(hào)(=)實(shí)現(xiàn),只是把等號(hào)右邊的值賦予等號(hào)左邊的變量。
每種主要的算術(shù)運(yùn)算以及其他幾個(gè)運(yùn)算都有復(fù)合賦值運(yùn)算符:

  • 乘法/賦值(*=)
  • 除法/賦值(/=)
  • 取模/賦值(%=)
  • 加法/賦值(+=)
  • 減法/賦值(-=)
  • 左移/賦值(<<=)
  • 有符號(hào)右移/賦值(>>=)
  • 無符號(hào)右移/賦值(>>>=)
    <br />

逗號(hào)運(yùn)算符(,)

用逗號(hào)運(yùn)算符可以在一條語句中執(zhí)行多個(gè)運(yùn)算。
例如:

var iNum1 = 1, iNum = 2, iNum3 = 3;

<br />

更多請(qǐng)參考:W3School

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容