摘要:引用同一個對象,否則。不同,同是或,有,數(shù)值相等相等否則同是或,正常比較。于是我們可以測試參考中的相等性判斷
概要
本文主要討論以下幾種比較操作:
== 寬松相等 ("double equals"),將執(zhí)行類型轉(zhuǎn)換
=== 嚴(yán)格相等 ("triple equals" 或 "identity")
Object.is (ECMAScript 2015/ ES6 新特性)與三等號相同,但是對于NaN和-0和+0進(jìn)行特殊處理
以及ECMA中的ToPrimitive,ToBoolean,ToNumber官方文檔的實現(xiàn)邏輯
==若type相同 1.同是Undefined或Null,true 2.同是Number 有NaN,false 數(shù)值相等(±0相等)true,否則false 3.同是String或Boolean,正常比較。 5.引用同一個對象,true,否則false。 null,undefined:true string,number: x == ToNumber(y) 有boolean:ToNumber(x)== y String|Number,Object:x == ToPrimitive(y) 返回false。===
type不同,false 同是undefined或null,true Number 有NaN,false 數(shù)值相等(±0相等)true,否則false 同是String或Boolean,正常比較。Object.is
Object.is = function(x, y) { // SameValue algorithm if (x === y) { // Steps 1-5, 7-10 // Steps 6.b-6.e: +0 != -0 return x !== 0 || 1 / x === 1 / y; } else { // Step 6.a: NaN == NaN return x !== x && y !== y; } };if(val)
return Boolean(val)===trueToBoolean ToNumber ToPrimitive
于是我們可以測試
var a=[] a.toString() //"" a=="" //true a==true //false a.toString=function(){return true} a==true //true參考
MDN JavaScript 中的相等性判斷
ECMS-262
JavaScript-Equality-Table
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/98818.html
摘要:如果沒有傳入的話如果是類型,則取否則,取這個方法大致和一樣,除了以下返回返回參考知乎中和區(qū)別是什么全面解析中的數(shù)據(jù)類型與類型轉(zhuǎn)換規(guī)范 有哪些判斷相等性的方法 JavaScript現(xiàn)在提供了三種方法來判斷相等性: ===,三個等號即嚴(yán)格相等 ==,兩個等號即寬松相等 Object.is(),ES6中用來判斷相等的方法 判斷相等性的細(xì)節(jié) ===(嚴(yán)格相等) 被比較的兩個數(shù)不會進(jìn)行類型轉(zhuǎn)...
摘要:通常在轉(zhuǎn)換不同數(shù)據(jù)類型時,相等和不相等會遵循以下規(guī)則若有一個操作數(shù)是布爾值,則比較前會將布爾值轉(zhuǎn)換為數(shù)值轉(zhuǎn)為,轉(zhuǎn)為。 本文是 重溫基礎(chǔ) 系列文章的第十八篇。今日感受:優(yōu)化自己的代碼,也是很愉快的事情。 系列目錄: 【復(fù)習(xí)資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎(chǔ)】1-14篇 【重溫基礎(chǔ)】15.JS對象介紹 【重溫基礎(chǔ)】16.JSON對象介紹 【重溫基礎(chǔ)...
摘要:抽象函數(shù)引發(fā)的關(guān)系是等價關(guān)系。所以當(dāng)且僅當(dāng)通過調(diào)用抽象數(shù)據(jù)類型的任何操作不能區(qū)分它們時,兩個對象是相等的。必須為每個抽象數(shù)據(jù)類型適當(dāng)?shù)囟x操作。一般來說,在面向?qū)ο缶幊讨惺褂檬且环N陋習(xí)。 大綱 什么是等價性?為什么要討論等價性?三種等價性的方式==與equals()不可變類型的等價性對象契約可變類型的等價性自動包裝和等價性 什么是等價性?為什么要討論等價性? ADT上的相等操作 ADT...
摘要:同一類的復(fù)合類型值兩個復(fù)合類型對象數(shù)組函數(shù)的數(shù)據(jù)比較時,不是比較它們的值是否相等,而是比較它們是否指向同一個對象。寬松相等雙等號將執(zhí)行類型轉(zhuǎn)換原始類型的值原始類型的數(shù)據(jù)會轉(zhuǎn)換成數(shù)值類型再進(jìn)行比較。 事件這塊知識點(diǎn)雖然是老生長談的,但對于我來說多多整理,多多感悟,溫故知新,每次看看這塊都有不同的收獲.(在這里我不會長篇大論,只會挑重點(diǎn);具體的小伙伴們自行查找)參考:https://dev...
摘要:同一類的復(fù)合類型值兩個復(fù)合類型對象數(shù)組函數(shù)的數(shù)據(jù)比較時,不是比較它們的值是否相等,而是比較它們是否指向同一個對象。寬松相等雙等號將執(zhí)行類型轉(zhuǎn)換原始類型的值原始類型的數(shù)據(jù)會轉(zhuǎn)換成數(shù)值類型再進(jìn)行比較。 事件這塊知識點(diǎn)雖然是老生長談的,但對于我來說多多整理,多多感悟,溫故知新,每次看看這塊都有不同的收獲.(在這里我不會長篇大論,只會挑重點(diǎn);具體的小伙伴們自行查找)參考:https://dev...
閱讀 3591·2021-11-24 10:19
閱讀 3730·2021-09-30 09:47
閱讀 1293·2019-08-30 15:56
閱讀 790·2019-08-29 15:11
閱讀 905·2019-08-29 13:43
閱讀 3570·2019-08-28 18:25
閱讀 2160·2019-08-26 13:27
閱讀 1439·2019-08-26 11:44