文章目錄
- 一、前言
- 二、嚴格相等運算符 (===)
- 三、寬松相等運算符 (==)
- 四、推薦做法
- 五、特殊情況
一、前言
在 JavaScript
中,===
和 ==
都是比較運算符,但它們在比較時有重要區別:
二、嚴格相等運算符 (===)
- 不進行類型轉換
- 只有當兩個操作數的值和類型都相同時才返回
true
- 也稱為"嚴格相等"或"恒等運算符"
5 === 5 // true
'5' === 5 // false (類型不同)
true === 1 // false
null === undefined // false
三、寬松相等運算符 (==)
- 會進行類型轉換
- 如果類型不同,會嘗試將操作數轉換為相同類型后再比較
- 也稱為"抽象相等"
5 == 5 // true
'5' == 5 // true (字符串轉換為數字)
true == 1 // true (布爾值轉換為數字)
null == undefined // true
四、推薦做法
在大多數情況下,推薦使用 ===
,因為:
- 它更嚴格,避免隱式類型轉換帶來的意外行為;
- 代碼意圖更清晰;
- 性能稍好(不需要進行類型轉換);
五、特殊情況
使用 ==
時,JavaScript
的類型轉換規則有時會令人困惑:
'' == '0' // false
0 == '' // true
0 == '0' // truefalse == 'false' // false
false == '0' // truefalse == undefined // false
false == null // false
null == undefined // true
理解這些差異有助于編寫更可靠、更易維護的 JavaScript
代碼。