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

資訊專欄INFORMATION COLUMN

【重溫基礎】18.相等性判斷

趙春朋 / 2579人閱讀

摘要:通常在轉換不同數據類型時,相等和不相等會遵循以下規則若有一個操作數是布爾值,則比較前會將布爾值轉換為數值轉為,轉為。

本文是 重溫基礎 系列文章的第十八篇。
今日感受:優化自己的代碼,也是很愉快的事情。

系列目錄:

【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理)

【重溫基礎】1-14篇

【重溫基礎】15.JS對象介紹

【重溫基礎】16.JSON對象介紹

【重溫基礎】17.WebAPI介紹

本章節復習的是JS中的關于嚴格相等和非嚴格相等的一些知識。

前置知識:
判斷兩個變量的值是否相等,是編程中非常重要的一個操作。這里我們心里面先有兩組對照,思考下:

相等 和 不相等

全等 和 不全等

1.介紹

在我們比較字符串、數值和布爾值的相等性,是比較簡單的,但是到了比較對象的時候,問題就比較復雜。
早期的時候ECMAScript規范中,在判斷相等和不相等時,會先將對象轉換成相似的類型,再執行比較。后面有人質疑其合理性,最后ECMAScript提出解決方法:提供兩組操作符:

相等不相等(寬松相等):先轉換再比較,使用==

全等不全等(嚴格相等):僅比較不轉換,使用===

另外還有一類ES6新增的方法:

Object.is (ES6新增)

2.相等和不相等

JavaScript中用相等操作符使用==進行比較,若兩個操作數相等,則返回true,否則返回false。反之,不相等操作符使用!=
這兩個操作符都會先轉換操作數類型,再進行比較

通常在轉換不同數據類型時,相等和不相等會遵循以下規則:

若有一個操作數是布爾值,則比較前會將布爾值轉換為數值false轉為0true轉為1

若一個操作數是字符串,另一個是數值,則比較前會將字符串轉換為數值

若一個操作數是對象,另一個不是,則比較前會調用valueOf()方法,用返回的基本類型值來判斷。

兩個操作符進行比較時會遵循下面規則:

nullundefined相等。

比較前不能講nullundefined轉換成其他值。

若一個操作數是NaN,則不相同(==時返回false!=時返回true)。

若兩個操作數是NaN,則不相同(==時返回false!=時返回true)。

若兩個操作數都是對象,則比較它們是不是同一個對象。

若兩個操作數都指向同一個對象,則相等操作符返回true,否則返回false

下面列出一些特殊情況的比較 :

表達式
null == undefined true
"NaN" == NaN false
9 == NaN false
NaN == NaN false
NaN != NaN true
false == 0 true
true == 1 true
true == 2 false
undefined == 0 false
null == 0 false
"9" == 9 true
3.全等和不全等

除了比較前不轉換操作數歪,全等和不全等與相等和不相等并無區別,但使用的是===,只有當不轉換的情況下兩個操作數相同,才會返回true

"99" == 99 ;  // true   因為先轉換類型 number 和 number
"99" === 99 ; // false  因為不轉換類型 string 和 number

不全等操作符就相對應的使用!==

"99" != 99 ;  // false   因為先轉換類型 number 和 number
"99" !== 99 ; // true    因為不轉換類型 string 和 number

特殊的:

null == undefined;   // true  類似的值
null === undefined;  // false 類型不同

由于相等和不相等操作符存在類型轉換問題,因此為了保持代碼中數據類型的完整性,我們推薦使用去哪等和不全等操作符。

4.同值相等(Object.is)

Object.is(value1, value2);,傳入兩個需要對比的值。
Object.is() 判斷兩個值是否相同,并且不會對參數進行類型轉換。如果下列任何一項成立,則兩個值相同:

兩個值都是 undefined

兩個值都是 null

兩個值都是 true 或者都是 false

兩個值是由相同個數的字符按照相同的順序組成的字符串

兩個值指向同一個對象

兩個值都是數字并且

都是正零 +0

都是負零 -0

都是 NaN

都是除零NaN 外的其它同一個數字

Object.is("leo", "leo");     // true
Object.is(window, window);   // true

Object.is("leo", "pingan");     // false
Object.is([], []);           // false

var leo = { a: 1 };
Object.is(leo, leo);       // true

Object.is(null, null);       // true

// 特例
Object.is(0, -0);            // false
Object.is(-0, -0);           // true
Object.is(NaN, 0/0);         // true

另外還有特殊的:

零值相等:

與同值相等類似,不過會認為 +0-0 相等。

5.對比圖

相等操作符對于不同類型的值,進行的比較如下圖所示(來源 MDN):

注意:

ToNumber(A) 表示比較前將參數 A 轉換為數字

ToPrimitive(A)通過嘗試調用 AA.toString()A.valueOf() 方法,將參數 A 轉換為原始值(Primitive)。

參考文章:

MDN JavaScript 中的相等性判斷

JavaScript高級程序設計

本部分內容到這結束

Author 王平安
E-mail pingan8787@qq.com
博 客 www.pingan8787.com
微 信 pingan8787
每日文章推薦 https://github.com/pingan8787...
JS小冊 js.pingan8787.com

歡迎關注微信公眾號【前端自習課】每天早晨,與您一起學習一篇優秀的前端技術博文 .

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

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

相關文章

  • 重溫基礎】19.閉包

    摘要:系列目錄復習資料資料整理個人整理重溫基礎篇重溫基礎對象介紹重溫基礎對象介紹重溫基礎介紹重溫基礎相等性判斷本章節復習的是中的關于閉包,這個小哥哥呀,看看。這里隨著閉包函數的結束,執行環境銷毀,變量回收。 本文是 重溫基礎 系列文章的第十九篇。今日感受:將混亂的事情找出之間的聯系,也是種能力。 系列目錄: 【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎】...

    nanfeiyan 評論0 收藏0
  • 重溫基礎】22.內存管理

    摘要:內存泄露內存泄露概念在計算機科學中,內存泄漏指由于疏忽或錯誤造成程序未能釋放已經不再使用的內存。判斷內存泄漏,以字段為準。 本文是 重溫基礎 系列文章的第二十二篇。 今日感受:優化學習方法。 系列目錄: 【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎】1-14篇 【重溫基礎】15.JS對象介紹 【重溫基礎】16.JSON對象介紹 【重溫基礎】1...

    Pandaaa 評論0 收藏0
  • 重溫基礎】21.高階函數

    摘要:歡迎您的支持系列目錄復習資料資料整理個人整理重溫基礎篇重溫基礎對象介紹重溫基礎對象介紹重溫基礎介紹重溫基礎相等性判斷重溫基礎閉包重溫基礎事件本章節復習的是中的高階函數,可以提高我們的開發效率。 本文是 重溫基礎 系列文章的第二十一篇。 今日感受:想家。 本人自己整理的【Cute-JavaScript】資料,包含:【ES6/ES7/ES8/ES9】,【JavaScript基礎...

    wua_wua2012 評論0 收藏0
  • 重溫基礎】5.表達式和運算符

    摘要:系列目錄復習資料資料整理個人整理重溫基礎語法和數據類型重溫基礎流程控制和錯誤處理重溫基礎循環和迭代重溫基礎函數本章節復習的是中的表達式和運算符,用好這些可以大大提高開發效率。 本文是 重溫基礎 系列文章的第五篇。今日感受:家的意義。 系列目錄: 【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎】1.語法和數據類型 【重溫基礎】2.流程控制和錯誤處理 【重溫基...

    馬忠志 評論0 收藏0
  • 重溫基礎】20.事件

    摘要:本文是重溫基礎系列文章的第二十篇。事件捕獲為截獲事件提供機會,然后實際的目標接收到事件,最后事件冒泡,對事件作出響應。事件處理事件處理,即響應某個事件。包括導致事件的元素事件類型等其他信息。 本文是 重溫基礎 系列文章的第二十篇。 這是第三個基礎系列的第一篇,歡迎持續關注呀! 重溫基礎 系列的【初級】和【中級】的文章,已經統一整理到我的【Cute-JavaScript】的Java...

    Blackjun 評論0 收藏0

發表評論

0條評論

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