1. 程式人生 > >JS 相等判斷(==,===,Object.is)

JS 相等判斷(==,===,Object.is)

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)