JS 比較值的三種方式
tags: JavaScript
比較值的三種方式
- == (loose equality)
- === (strict equality)
Object.is()
Object.is()
和 === 的差異
除了以下情況,Object.is()
和 === 的行為是完全相同的
處理 NaN 的比較
javascript
// NaN 的比較
NaN === NaN // false
Object.is(NaN, NaN) // true
// 在實際應用中
const x = 0/0; // NaN
console.log(x === NaN) // false
console.log(Object.is(x, NaN)) // true
要分辨 NaN 的話,可以用
isNaN
處理正負零的比較
javascript
// 正負零的比較
-0 === +0 // true
Object.is(-0, +0) // false
// 在實際應用中
const negZero = -0;
console.log(negZero === 0) // true
console.log(Object.is(negZero, 0)) // false
哪個情境下要用哪個?
相等性比較,使用 ===
就足夠了,而且效能可能較好
處理 NaN
使用 Object.is()
區分 +0 和 -0
使用 Object.is()
效能比較
===
是運算符,直接在引擎層面實現 Object.is()
是方法調用,有額外的函數調用開銷