成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

詳解一下 javascript 中==與===的比較

wwq0327 / 2077人閱讀

摘要:當和為引用同一對象時返回。若為且為,返回比較的結(jié)果。等價于,除了與的執(zhí)行順序。所以標準中認為相等的值可能被檢測為不等。實際上這一算法認為兩個字符串已經(jīng)是經(jīng)過規(guī)范化的形式。

**

11.9.3 抽象相等比較算法

**
比較運算 x==y, 其中 x 和 y 是值,產(chǎn)生 true 或者 false。這樣的比較按如下方式進行:

若 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, 則當 x 和 y 為完全相同的字符序列(長度相等且相同字符在相同位置)時返回 true。 否則, 返回 false。
若 Type(x) 為 Boolean, 當 x 和 y 為同為 true 或者同為 false 時返回 true。 否則, 返回 false。
當 x 和 y 為引用同一對象時返回 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。
注:按以上相等之定義:

字符串比較可以按這種方式強制執(zhí)行: "" + a == "" + b。
數(shù)值比較可以按這種方式強制執(zhí)行: +a == +b。
布爾值比較可以按這種方式強制執(zhí)行: !a == !b。
注:等值比較操作保證以下不變:

A != B 等價于 !(A==B)。
A == B 等價于 B == A,除了 A 與 B 的執(zhí)行順序。
注:相等運算符不總是傳遞的。 例如,兩個不同的 String 對象,都表示相同的字符串值;== 運算符認為每個 String 對象都與字符串值相等,但是兩個字符串對象互不相等。例如:

new String("a") == "a" 和 "a" == new String("a") 皆為 true。
new String("a") == new String("a") 為 false。
字符串比較使用的方式是簡單地檢測字符編碼單元序列是否相同。不會做更復雜的、基于語義的字符或者字符串相等的定義以及 Unicode 規(guī)范中定義的 collating order。所以 Unicode 標準中認為相等的 String 值可能被檢測為不等。實際上這一算法認為兩個字符串已經(jīng)是經(jīng)過規(guī)范化的形式。

11.9.6 嚴格等于比較算法

比較 x===y,x 和 y 為值,需要產(chǎn)出 true 或 false。比較過程如下:

如果 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 為同一個數(shù)字,返回 true
如果 x 為 +0,y 為 -0,返回 true
如果 x 為 -0,y 為 +0,返回 true
返回 false
如果 Type(x) 結(jié)果為 String,如果 x 與 y 為完全相同的字符序列(相同的長度和相同的字符對應相同的位置),返回 true,否則,返回 false
如果 Type(x) 結(jié)果為 Boolean,如果 x 與 y 都為 true 或 false,則返回 true,否則,返回 false
如果 x 和 y 引用到同一個 Object 對象,返回 true,否則,返回 false
注:此算法與 SameValue 算法在對待有符號的零和 NaN 上表現(xiàn)不同。

參考:http://www.ecma-international...

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/92366.html

相關文章

  • 詳解一下 javascript 比較

    摘要:今天在筆試題被公子給了,遂想起之前要寫的一篇文章,中蛋疼的比較運算。當和為引用同一對象時返回。若為且為,返回的結(jié)果。所以標準中認為相等的值可能被檢測為不等。實際上這一算法認為兩個字符串已經(jīng)是經(jīng)過規(guī)范化的形式。 今天在 JS筆試題 被 @公子 給AT了,遂想起之前要寫的一篇文章,javascript 中蛋疼的比較運算。 翻譯自:http://www.ecma-international....

    Pluser 評論0 收藏0
  • javascript變量運算符詳解

    摘要:代碼示例等號檢查,類型轉(zhuǎn)換后返回全等檢查,由于時類型,時類型,類型不同,返回關系運算符關系運算符執(zhí)行的是比較運算,通常用于判斷兩個變量哪個大哪個小關系運算符都返回一個布爾值。邏輯或運輸符用雙豎線表示。 1.運算符 JavaScript中常見的運算符包含:賦值運算符、算數(shù)運算符、等性運算符、關系運算符、條件運算符、布爾運算符、邏輯運算符…… 1.賦值運算符 = 賦值運算符=,用于給某個變...

    Sourcelink 評論0 收藏0
  • JavaScript深入淺出

    摘要:理解的函數(shù)基礎要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當作缺點提及,但是只要善于運用,其實基于原型的繼承模型比傳統(tǒng)的類繼承還要強大。中文指南基本操作指南二繼續(xù)熟悉的幾對方法,包括,,。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請注明出處。 怎樣使用 this 因為本人屬于偽前端,因此文中只看懂了 8 成左右,希望能夠給大家?guī)韼椭?...(據(jù)說是阿里的前端妹子寫的) this 的值到底...

    blair 評論0 收藏0
  • 瀏覽器事件模型捕獲階段、目標階段、冒泡階段實例詳解

    摘要:目標階段真正點擊的元素的事件發(fā)生了兩次,因為在上面的代碼中,既在捕獲階段綁定了事件,又在冒泡階段綁定了事件,所以發(fā)生了兩次。所以很明顯用直接綁定的事件發(fā)生在了冒泡階段。 如果對事件大概了解,可能知道有事件冒泡這回事,但是冒泡、捕獲、傳播這些機制可能還沒有深入的研究實踐一下,我抽時間整理了一下相關的知識。 本文主要對事件機制一些細節(jié)進行討論,過于基礎的事件綁定知識方法沒有介紹。 特別少...

    mylxsw 評論0 收藏0
  • javascript對象原型成員詳解

    摘要:和的作用一樣,區(qū)別在于寫法語法對象對象作用判斷對象是否在對象的原型鏈上語法對象構(gòu)造函數(shù)作用判斷構(gòu)造函數(shù)的屬性是否在對象的原型鏈上,如果在,就返回屬性是否可枚舉用于檢查給定的屬性是否能夠使用語句。 ## javascript對象原型成員詳解 ## ECMAScript 中的對象就是一組數(shù)據(jù)和功能的集合,對象可以通過 new 操作符后跟要創(chuàng)建的對象名稱來...

    zhkai 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<