JavaScript高階程序設計第三版筆記-操作符03

關係操作符

  • 在比較字符串時,實際比較的是兩個字符串中對應位置的每個字符的字符編碼
  • 任何操作數與NaN進行關係比較,結果都是false

var result= "Brick" < "alphabet";    //true

在這個例子中,字符串Brick被認爲小於字符串alphabet,原因是字母B的字符編碼爲66,而小寫字母a的字符編碼是97

如果要按照字母表的順序比較字符串,就必須把兩個操作數都轉換爲相同的大小寫形式(全部大寫或全部小寫),然後再進行比較,如下所示:

var result="Brick".toLowerCase() < "alphabet".toLowerCase();      //false

通過將這兩個操作數都轉換爲小寫的形式,就可以得出alphabet按字母表順序排在Brick之前的正確判斷了

相等操作符

    最早在ECMAScript中的相等和不等操作符在執行比較之前,先將對象轉換成相似類型。

    最後,ECMAScript提供兩組操作符:相等和不相等——先轉換再比較,全等和全部等——僅比較不轉換

相等和不相等

在轉換不同的數據類型時,相等和不相等操作符遵循下列基本規則:

  • 如果有一個操作數是布爾值,則在比較相等性之前先將其轉換爲數值——false轉換爲0,true轉換爲1
  • 如果一個操作數是字符串,另一個操作數是數值,在比較相等性之前先將字符串轉換爲數值
  • 如果一個操作數是對象,另一個操作數不是,則調用對象的valueOf()方法,用得到的基本類型數值按照前面的規則進行比較,這兩個操作符在進行比較時則要遵循下列規則:
  •         null和underfined是相等的
  •         要比較相等性之前,不能將null和underfined轉換成其他任何值
  •         如果有一個操作數是NaN,則相等操作符返回false,不相等操作符返回true
  •         即使兩個操作數都是NaN,相等操作符也返回false,因爲按照規則,NaN不等於NaN
  •         如果兩個操作數都是對象,則比較他們是不是同一個對象。如果兩個操作數都指向同一個對象,則相等操作符返回true,否則返回false

全等(===)和不全等(!==)

除了在比較之前不轉換操作數之外,全等不全等與相等不相等操作符額沒有什麼區別

var result1=("55" == 55);    //true  因爲轉換後相等

var result2=("55" === 55);   //false 因爲不轉換數據類型不相等

null == underfined會返回true,因爲他們是類似的值,但null===underfined會返回false,因爲他們是不同類型的值

由於相等和不相等操作符存在類型轉換問題,而爲了保持代碼中數據類型的完整性,推薦使用全等和不全等操作符

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章