相等比較 | javascript
在ES2015,有四個相等比較方法:一般相等(==)嚴格相等(===):被用於 Array.prototype.indexOf、 Array.prototype.lastIndexOf和case-matching 零值相等:被用於 %TypedArray% 和 ArrayBuffer建構子,以及 Map 和 Set 運算子,還有將在ES2016新增的 String.prototype.includes。同值相等: 用在除上面提及的所有情況。JavaScript提供三種不同的值比較運算操作:嚴格相等(或稱 "三等於"、"全等")使用 ===[1]一般相等("雙等於")使用 ==[2]還有 Object.is[3](ECMAScript2015新加入)要用哪個操作取決於你要哪種類型的比較。簡單來說,一般...
在 ES2015,有四個相等比較方法:
一般相等 (==) 嚴格相等 (===):被用於 Array.prototype.indexOf、 Array.prototype.lastIndexOf 和 case-matching 零值相等:被用於 %TypedArray% 和 ArrayBuffer 建構子,以及 Map 和 Set 運算子,還有將在 ES2016 新增的 String.prototype.includes。 同值相等: 用在除上面提及的所有情況。JavaScript 提供三種不同的值比較運算操作:
嚴格相等 (或稱 "三等於"、"全等") 使用 ===[1] 一般相等 ("雙等於") 使用 ==[2] 還有 Object.is[3] (ECMAScript 2015 新加入)要用哪個操作取決於你要哪種類型的比較。
簡單來說,一般相等會將型別一致化後比較;嚴格相等則不會(也就是說若型別不同,就會回傳 fasle);Object.is 會和嚴格相等做同樣的事,但會將 NaN、-0 和 +0 獨立處理,因此這三個不會相等,而 Object.is(NaN, NaN) 則會回傳 true 。(用一般相等或嚴格相等比較兩個 NaN 時會回傳 false ,因為 IEEE 754 如此規範。) 切記,這三種判斷必須考慮原型,因為他們在設計上不被考慮為相等。對於任何非原型物件 x、y,即使他們有著相同結構,但如果是不同物件,比較就會是 false。
嚴格相等(===)嚴格相等比較兩個值,而被比較的兩個值都不會轉換成其他型別。如果值是不同型別,就會被視為不相等。如果兩值型別相同但不是數字,若值相同,則為相等。此外,如果兩個值皆為數字,只要他們是 NaN 以外的同一值,或者 +0 和 -0,則為相等。
var num = 0; var obj = new String("0"); var str = "0"; console.log(num === num); // true console.log(obj === obj); // true console.log(str === str); // true console.log(num === obj); /...