国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

banana_pi / 1509人閱讀

摘要:引用同一個對象,否則。不同,同是或,有,數值相等相等否則同是或,正常比較。于是我們可以測試參考中的相等性判斷

概要

本文主要討論以下幾種比較操作:

== 寬松相等 ("double equals"),將執行類型轉換

=== 嚴格相等 ("triple equals" 或 "identity")

Object.is (ECMAScript 2015/ ES6 新特性)與三等號相同,但是對于NaN和-0和+0進行特殊處理

以及ECMA中的ToPrimitive,ToBoolean,ToNumber官方文檔的實現邏輯

==
若type相同
    1.同是Undefined或Null,true
    2.同是Number
        有NaN,false
        數值相等(±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
    數值相等(±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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/98818.html

相關文章

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

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

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

    摘要:通常在轉換不同數據類型時,相等和不相等會遵循以下規則若有一個操作數是布爾值,則比較前會將布爾值轉換為數值轉為,轉為。 本文是 重溫基礎 系列文章的第十八篇。今日感受:優化自己的代碼,也是很愉快的事情。 系列目錄: 【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎】1-14篇 【重溫基礎】15.JS對象介紹 【重溫基礎】16.JSON對象介紹 【重溫基礎...

    趙春朋 評論0 收藏0
  • 第3章:抽象數據類型(ADT)和面向對象編程(OOP) 3.5 ADT和OOP中的等價

    摘要:抽象函數引發的關系是等價關系。所以當且僅當通過調用抽象數據類型的任何操作不能區分它們時,兩個對象是相等的。必須為每個抽象數據類型適當地定義操作。一般來說,在面向對象編程中使用是一種陋習。 大綱 什么是等價性?為什么要討論等價性?三種等價性的方式==與equals()不可變類型的等價性對象契約可變類型的等價性自動包裝和等價性 什么是等價性?為什么要討論等價性? ADT上的相等操作 ADT...

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

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

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

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

    2bdenny 評論0 收藏0

發表評論

0條評論

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