JavaScript 基礎

在 JavaScript 當中,==、=== 與 Object.is() 的區別

AI 練習作答

=====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 評分