JS 相等判斷(==,===,Object.is)
阿新 • • 發佈:2018-05-14
fin http 相等 之間 情況下 事情 進行 註意 efi
JavaScript提供三種不同的值比較操作:
- 嚴格相等 ("triple equals" 或 "identity"),使用 === ,
- 寬松相等 ("double equals") ,使用 ==
- 以及
Object.is
(ECMAScript 2015/ ES6 新特性)
簡而言之,在比較兩件事情時,雙等號將執行類型轉換; 三等號將進行相同的比較,而不進行類型轉換 (如果類型不同, 只是總會返回 false ); 而Object.is的行為方式與三等號相同,但是對於NaN和-0和+0進行特殊處理,所以最後兩個不相同,而Object.is(NaN,NaN)將為 true
。(通常使用雙等號或三等號將NaN與NaN進行比較,結果為false,因為IEEE 754如是說.) 請註意,所有這些之間的區別都與其處理原語有關; 這三個運算符的原語中,沒有一個會比較兩個變量是否結構上概念類似。對於任意兩個不同的非原始對象,即便他們有相同的結構, 以上三個運算符都會計算得到 false 。
什麽時候使用 Object.is 或者 三等
object.is 會對對象屬性描述進行判斷,如果不需要判斷屬性描述的情況下應優先使用三等
對象屬性描述 參考 Object.defineProperty
JS 相等判斷(==,===,Object.is)