More Related Content
More from LearningTech (20)
20120525 equal identically_equal
- 4. EQUAL 與 IDENTICALLY EQUAL 的差異
• 相等 (Equal, ==) 或 不相等 (Not Equal, !=)
• 強制轉換資料型別後,再進行比較。
• 全等 (Identically Equal, ===) 或 不全等 (Not Identically Equal, !==)
• 直接比較而不強制轉換資料型別。
06/08/12 4
- 5. 相等 (EQUAL, ==) / 不相等 (NOT EQUAL, !=)
• 當比較兩個變數時
• 資料型態相同:
• == 跟 === 的結果一樣,直接比較數值是否相等。
• 資料型態不同:
• 就強制轉型 (type coercion) 後,再進行數值的比較。
06/08/12 5
- 6. 比較前轉換資料型態的規則
• Boolean vs Number
• false 轉成 0 ; true 轉成 1 ,再進行比較。
• String vs. Number
• 將 String 轉成 Number 再進行比較。
• String 轉成 Number 可能會是 Number 或是 NaN 。
• Object vs. non-Object
• 利用 valueOf() 將 Object 的值取出後,再依照上述的規則比較。
06/08/12 6
- 7. 比較前轉換資料型態的規則 (2)
• null 與 undefined 是相等的 ( 這裡指的是 == ,並非全等 ===) 。
• 在比較之前,不能將 null 與 undefined 轉換成其他值。
• 如果其中一個變數值是 NaN ,那麼在經過 == 的比較後,會 return false ,而 !
= 會 return true 。
有趣的是,即使兩個變數都是 NaN ,但是在經過 == 的比較後,還是會
return false 。 ( 因為 NaN 不等於 NaN)
• 如果兩個變數型態都是物件 (Object) ,則比較兩者是否指向同一個物件,是就
return true ,不是則 return false 。
06/08/12 7
- 11. REFERENCE
• http://zh.wikipedia.org/wiki/ECMAScript
• http://kuro.tw/blog/2011/12/01/javascript-equal-identically-equal
06/08/12 11
- 12. 參考書目
• Professional JavaScript for Web Developers
• JavaScript: The Good Parts
06/08/12 12