JavaScript 基礎
在 JavaScript 當中,==、=== 與 Object.is() 的區別
==、=== 與 Object.is() 的區別
==(寬鬆相等)
會進行型別轉換(Type Coercion),比較前先嘗試將兩邊轉換為相同型別:
0 == false // true(false 轉換為 0)
'' == false // true
null == undefined // true
1 == '1' // true('1' 轉換為 1)
===(嚴格相等)
不進行型別轉換,型別與值都必須完全相同:
0 === false // false(型別不同)
1 === '1' // false(型別不同)
null === undefined // false(型別不同)
NaN === NaN // false(NaN 的特殊行為)
Object.is()
行為與 === 幾乎相同,但修正了兩個特殊情況:
Object.is(NaN, NaN) // true(=== 回傳 false)
Object.is(+0, -0) // false(=== 回傳 true)
Object.is(1, 1) // true
Object.is(null, null) // true
總結比較
| 比較方式 | == |
=== |
Object.is() |
|---|---|---|---|
| 型別轉換 | ✅ 會 | ❌ 不會 | ❌ 不會 |
NaN vs NaN |
false | false | true |
+0 vs -0 |
true | true | false |
實務上應優先使用
===;需要精確處理NaN和±0時才使用Object.is()。
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
