摘要:當(dāng)和為引用同一對(duì)象時(shí)返回。若為且為,返回比較的結(jié)果。等價(jià)于,除了與的執(zhí)行順序。所以標(biāo)準(zhǔn)中認(rèn)為相等的值可能被檢測(cè)為不等。實(shí)際上這一算法認(rèn)為兩個(gè)字符串已經(jīng)是經(jīng)過(guò)規(guī)范化的形式。
**
11.9.3 抽象相等比較算法**
比較運(yùn)算 x==y, 其中 x 和 y 是值,產(chǎn)生 true 或者 false。這樣的比較按如下方式進(jìn)行:
若 Type(x) 與 Type(y) 相同, 則
若 Type(x) 為 Undefined, 返回 true。
若 Type(x) 為 Null, 返回 true。
若 Type(x) 為 Number, 則
若 x 為 NaN, 返回 false。
若 y 為 NaN, 返回 false。
若 x 與 y 為相等數(shù)值, 返回 true。
若 x 為 +0 且 y 為 ?0, 返回 true。
若 x 為 ?0 且 y 為 +0, 返回 true。
返回 false。
若 Type(x) 為 String, 則當(dāng) x 和 y 為完全相同的字符序列(長(zhǎng)度相等且相同字符在相同位置)時(shí)返回 true。 否則, 返回 false。
若 Type(x) 為 Boolean, 當(dāng) x 和 y 為同為 true 或者同為 false 時(shí)返回 true。 否則, 返回 false。
當(dāng) x 和 y 為引用同一對(duì)象時(shí)返回 true。否則,返回 false。
若 x 為 null 且 y 為 undefined, 返回 true。
若 x 為 undefined 且 y 為 null, 返回 true。
若 Type(x) 為 Number 且 Type(y) 為 String, 返回 comparison x == ToNumber(y) 的結(jié)果。
若 Type(x) 為 String 且 Type(y) 為 Number,
返回比較 ToNumber(x) == y 的結(jié)果。
若 Type(x) 為 Boolean, 返回比較 ToNumber(x) == y 的結(jié)果。
若 Type(y) 為 Boolean, 返回比較 x == ToNumber(y) 的結(jié)果。
若 Type(x) 為 String 或 Number,且 Type(y) 為 Object,返回比較 x == ToPrimitive(y) 的結(jié)果。
若 Type(x) 為 Object 且 Type(y) 為 String 或 Number, 返回比較 ToPrimitive(x) == y 的結(jié)果。
返回 false。
注:按以上相等之定義:
字符串比較可以按這種方式強(qiáng)制執(zhí)行: "" + a == "" + b。
數(shù)值比較可以按這種方式強(qiáng)制執(zhí)行: +a == +b。
布爾值比較可以按這種方式強(qiáng)制執(zhí)行: !a == !b。
注:等值比較操作保證以下不變:
A != B 等價(jià)于 !(A==B)。
A == B 等價(jià)于 B == A,除了 A 與 B 的執(zhí)行順序。
注:相等運(yùn)算符不總是傳遞的。 例如,兩個(gè)不同的 String 對(duì)象,都表示相同的字符串值;== 運(yùn)算符認(rèn)為每個(gè) String 對(duì)象都與字符串值相等,但是兩個(gè)字符串對(duì)象互不相等。例如:
new String("a") == "a" 和 "a" == new String("a") 皆為 true。
new String("a") == new String("a") 為 false。
字符串比較使用的方式是簡(jiǎn)單地檢測(cè)字符編碼單元序列是否相同。不會(huì)做更復(fù)雜的、基于語(yǔ)義的字符或者字符串相等的定義以及 Unicode 規(guī)范中定義的 collating order。所以 Unicode 標(biāo)準(zhǔn)中認(rèn)為相等的 String 值可能被檢測(cè)為不等。實(shí)際上這一算法認(rèn)為兩個(gè)字符串已經(jīng)是經(jīng)過(guò)規(guī)范化的形式。
比較 x===y,x 和 y 為值,需要產(chǎn)出 true 或 false。比較過(guò)程如下:
如果 Type(x) 與 Type(y) 的結(jié)果不一致,返回 false,否則
如果 Type(x) 結(jié)果為 Undefined,返回 true
如果 Type(x) 結(jié)果為 Null,返回 true
如果 Type(x) 結(jié)果為 Number,則
如果 x 為 NaN,返回 false
如果 y 為 NaN,返回 false
如果 x 與 y 為同一個(gè)數(shù)字,返回 true
如果 x 為 +0,y 為 -0,返回 true
如果 x 為 -0,y 為 +0,返回 true
返回 false
如果 Type(x) 結(jié)果為 String,如果 x 與 y 為完全相同的字符序列(相同的長(zhǎng)度和相同的字符對(duì)應(yīng)相同的位置),返回 true,否則,返回 false
如果 Type(x) 結(jié)果為 Boolean,如果 x 與 y 都為 true 或 false,則返回 true,否則,返回 false
如果 x 和 y 引用到同一個(gè) Object 對(duì)象,返回 true,否則,返回 false
注:此算法與 SameValue 算法在對(duì)待有符號(hào)的零和 NaN 上表現(xiàn)不同。
參考:http://www.ecma-international...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/92366.html
摘要:今天在筆試題被公子給了,遂想起之前要寫(xiě)的一篇文章,中蛋疼的比較運(yùn)算。當(dāng)和為引用同一對(duì)象時(shí)返回。若為且為,返回的結(jié)果。所以標(biāo)準(zhǔn)中認(rèn)為相等的值可能被檢測(cè)為不等。實(shí)際上這一算法認(rèn)為兩個(gè)字符串已經(jīng)是經(jīng)過(guò)規(guī)范化的形式。 今天在 JS筆試題 被 @公子 給AT了,遂想起之前要寫(xiě)的一篇文章,javascript 中蛋疼的比較運(yùn)算。 翻譯自:http://www.ecma-international....
摘要:代碼示例等號(hào)檢查,類(lèi)型轉(zhuǎn)換后返回全等檢查,由于時(shí)類(lèi)型,時(shí)類(lèi)型,類(lèi)型不同,返回關(guān)系運(yùn)算符關(guān)系運(yùn)算符執(zhí)行的是比較運(yùn)算,通常用于判斷兩個(gè)變量哪個(gè)大哪個(gè)小關(guān)系運(yùn)算符都返回一個(gè)布爾值。邏輯或運(yùn)輸符用雙豎線表示。 1.運(yùn)算符 JavaScript中常見(jiàn)的運(yùn)算符包含:賦值運(yùn)算符、算數(shù)運(yùn)算符、等性運(yùn)算符、關(guān)系運(yùn)算符、條件運(yùn)算符、布爾運(yùn)算符、邏輯運(yùn)算符…… 1.賦值運(yùn)算符 = 賦值運(yùn)算符=,用于給某個(gè)變...
摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類(lèi)繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對(duì)方法,包括,,。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸耍虼宋闹兄豢炊?8 成左右,希望能夠給大家?guī)?lái)幫助....(據(jù)說(shuō)是阿里的前端妹子寫(xiě)的) this 的值到底...
摘要:目標(biāo)階段真正點(diǎn)擊的元素的事件發(fā)生了兩次,因?yàn)樵谏厦娴拇a中,既在捕獲階段綁定了事件,又在冒泡階段綁定了事件,所以發(fā)生了兩次。所以很明顯用直接綁定的事件發(fā)生在了冒泡階段。 如果對(duì)事件大概了解,可能知道有事件冒泡這回事,但是冒泡、捕獲、傳播這些機(jī)制可能還沒(méi)有深入的研究實(shí)踐一下,我抽時(shí)間整理了一下相關(guān)的知識(shí)。 本文主要對(duì)事件機(jī)制一些細(xì)節(jié)進(jìn)行討論,過(guò)于基礎(chǔ)的事件綁定知識(shí)方法沒(méi)有介紹。 特別少...
摘要:和的作用一樣,區(qū)別在于寫(xiě)法語(yǔ)法對(duì)象對(duì)象作用判斷對(duì)象是否在對(duì)象的原型鏈上語(yǔ)法對(duì)象構(gòu)造函數(shù)作用判斷構(gòu)造函數(shù)的屬性是否在對(duì)象的原型鏈上,如果在,就返回屬性是否可枚舉用于檢查給定的屬性是否能夠使用語(yǔ)句。 ## javascript對(duì)象原型成員詳解 ## ECMAScript 中的對(duì)象就是一組數(shù)據(jù)和功能的集合,對(duì)象可以通過(guò) new 操作符后跟要?jiǎng)?chuàng)建的對(duì)象名稱(chēng)來(lái)...
閱讀 1537·2023-04-25 18:56
閱讀 1484·2021-09-29 09:34
閱讀 1710·2021-09-22 15:51
閱讀 3483·2021-09-14 18:03
閱讀 1160·2021-07-23 17:54
閱讀 2018·2019-08-29 18:38
閱讀 2900·2019-08-29 12:38
閱讀 610·2019-08-26 13:41