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

資訊專欄INFORMATION COLUMN

FE.ES-ECMA中的相等性判斷

banana_pi / 1508人閱讀

摘要:引用同一個對象,否則。不同,同是或,有,數(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)===true
ToBoolean

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

相關(guān)文章

  • 【前端工程師手冊】說清楚JavaScript中的相等判斷

    摘要:如果沒有傳入的話如果是類型,則取否則,取這個方法大致和一樣,除了以下返回返回參考知乎中和區(qū)別是什么全面解析中的數(shù)據(jù)類型與類型轉(zhuǎn)換規(guī)范 有哪些判斷相等性的方法 JavaScript現(xiàn)在提供了三種方法來判斷相等性: ===,三個等號即嚴(yán)格相等 ==,兩個等號即寬松相等 Object.is(),ES6中用來判斷相等的方法 判斷相等性的細(xì)節(jié) ===(嚴(yán)格相等) 被比較的兩個數(shù)不會進(jìn)行類型轉(zhuǎn)...

    crossoverJie 評論0 收藏0
  • 【重溫基礎(chǔ)】18.相等判斷

    摘要:通常在轉(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ǔ)...

    趙春朋 評論0 收藏0
  • 第3章:抽象數(shù)據(jù)類型(ADT)和面向?qū)ο缶幊蹋∣OP) 3.5 ADT和OOP中的等價

    摘要:抽象函數(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...

    Fundebug 評論0 收藏0
  • JavaScript疑難雜癥系列-相等判斷

    摘要:同一類的復(fù)合類型值兩個復(fù)合類型對象數(shù)組函數(shù)的數(shù)據(jù)比較時,不是比較它們的值是否相等,而是比較它們是否指向同一個對象。寬松相等雙等號將執(zhí)行類型轉(zhuǎn)換原始類型的值原始類型的數(shù)據(jù)會轉(zhuǎn)換成數(shù)值類型再進(jìn)行比較。 事件這塊知識點(diǎn)雖然是老生長談的,但對于我來說多多整理,多多感悟,溫故知新,每次看看這塊都有不同的收獲.(在這里我不會長篇大論,只會挑重點(diǎn);具體的小伙伴們自行查找)參考:https://dev...

    Flink_China 評論0 收藏0
  • JavaScript疑難雜癥系列-相等判斷

    摘要:同一類的復(fù)合類型值兩個復(fù)合類型對象數(shù)組函數(shù)的數(shù)據(jù)比較時,不是比較它們的值是否相等,而是比較它們是否指向同一個對象。寬松相等雙等號將執(zhí)行類型轉(zhuǎn)換原始類型的值原始類型的數(shù)據(jù)會轉(zhuǎn)換成數(shù)值類型再進(jìn)行比較。 事件這塊知識點(diǎn)雖然是老生長談的,但對于我來說多多整理,多多感悟,溫故知新,每次看看這塊都有不同的收獲.(在這里我不會長篇大論,只會挑重點(diǎn);具體的小伙伴們自行查找)參考:https://dev...

    2bdenny 評論0 收藏0

發(fā)表評論

0條評論

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