在JS中,常常需要判斷兩個對象是否相等,常見的方法有==,===,!=,!==
ES6中,新增了一個方法Object.is(a, b),用于判斷兩個值是否相等,但是在某些情況下會和上述的判斷符有些差異
Object.is('foo', 'foo') //true
Object.is(window, window) //true
Object.is([], []) //false
Object.is(null, null) //true
區別:
簡單的說,兩等號判等會在比較時自動進行類型轉換,而三等號不會,如果類型不同,會直接返回false,而Object.is()則是在三等號的基礎上,又特別處理了NaN、-0、+0,保證了-0和+0不再相同,但是要注意的是Object.is(NaN, NaN)會返回true
參考鏈接:
https://developer.mozilla.org/en-US/docs/Web/javaScript/Reference/Global_Objects/Object/is
新聞熱點
疑難解答