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

資訊專欄INFORMATION COLUMN

【重溫基礎(chǔ)】18.相等性判斷

趙春朋 / 2585人閱讀

摘要:通常在轉(zhuǎn)換不同數(shù)據(jù)類型時(shí),相等和不相等會(huì)遵循以下規(guī)則若有一個(gè)操作數(shù)是布爾值,則比較前會(huì)將布爾值轉(zhuǎn)換為數(shù)值轉(zhuǎn)為,轉(zhuǎn)為。

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

系列目錄:

【復(fù)習(xí)資料】ES6/ES7/ES8/ES9資料整理(個(gè)人整理)

【重溫基礎(chǔ)】1-14篇

【重溫基礎(chǔ)】15.JS對(duì)象介紹

【重溫基礎(chǔ)】16.JSON對(duì)象介紹

【重溫基礎(chǔ)】17.WebAPI介紹

本章節(jié)復(fù)習(xí)的是JS中的關(guān)于嚴(yán)格相等和非嚴(yán)格相等的一些知識(shí)。

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

相等 和 不相等

全等 和 不全等

1.介紹

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

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

全等不全等(嚴(yán)格相等):僅比較不轉(zhuǎn)換,使用===

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

Object.is (ES6新增)

2.相等和不相等

JavaScript中用相等操作符使用==進(jìn)行比較,若兩個(gè)操作數(shù)相等,則返回true,否則返回false。反之,不相等操作符使用!=
這兩個(gè)操作符都會(huì)先轉(zhuǎn)換操作數(shù)類型,再進(jìn)行比較

通常在轉(zhuǎn)換不同數(shù)據(jù)類型時(shí),相等和不相等會(huì)遵循以下規(guī)則:

若有一個(gè)操作數(shù)是布爾值,則比較前會(huì)將布爾值轉(zhuǎn)換為數(shù)值false轉(zhuǎn)為0true轉(zhuǎn)為1

若一個(gè)操作數(shù)是字符串,另一個(gè)是數(shù)值,則比較前會(huì)將字符串轉(zhuǎn)換為數(shù)值

若一個(gè)操作數(shù)是對(duì)象,另一個(gè)不是,則比較前會(huì)調(diào)用valueOf()方法,用返回的基本類型值來判斷。

兩個(gè)操作符進(jìn)行比較時(shí)會(huì)遵循下面規(guī)則:

nullundefined相等。

比較前不能講nullundefined轉(zhuǎn)換成其他值。

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

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

若兩個(gè)操作數(shù)都是對(duì)象,則比較它們是不是同一個(gè)對(duì)象。

若兩個(gè)操作數(shù)都指向同一個(gè)對(duì)象,則相等操作符返回true,否則返回false

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

表達(dá)式
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.全等和不全等

除了比較前不轉(zhuǎn)換操作數(shù)歪,全等和不全等與相等和不相等并無區(qū)別,但使用的是===,只有當(dāng)不轉(zhuǎn)換的情況下兩個(gè)操作數(shù)相同,才會(huì)返回true

"99" == 99 ;  // true   因?yàn)橄绒D(zhuǎn)換類型 number 和 number
"99" === 99 ; // false  因?yàn)椴晦D(zhuǎn)換類型 string 和 number

不全等操作符就相對(duì)應(yīng)的使用!==

"99" != 99 ;  // false   因?yàn)橄绒D(zhuǎn)換類型 number 和 number
"99" !== 99 ; // true    因?yàn)椴晦D(zhuǎn)換類型 string 和 number

特殊的:

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

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

4.同值相等(Object.is)

Object.is(value1, value2);,傳入兩個(gè)需要對(duì)比的值。
Object.is() 判斷兩個(gè)值是否相同,并且不會(huì)對(duì)參數(shù)進(jìn)行類型轉(zhuǎn)換。如果下列任何一項(xiàng)成立,則兩個(gè)值相同:

兩個(gè)值都是 undefined

兩個(gè)值都是 null

兩個(gè)值都是 true 或者都是 false

兩個(gè)值是由相同個(gè)數(shù)的字符按照相同的順序組成的字符串

兩個(gè)值指向同一個(gè)對(duì)象

兩個(gè)值都是數(shù)字并且

都是正零 +0

都是負(fù)零 -0

都是 NaN

都是除零NaN 外的其它同一個(gè)數(shù)字

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

另外還有特殊的:

零值相等:

與同值相等類似,不過會(huì)認(rèn)為 +0-0 相等。

5.對(duì)比圖

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

注意:

ToNumber(A) 表示比較前將參數(shù) A 轉(zhuǎn)換為數(shù)字

ToPrimitive(A)通過嘗試調(diào)用 AA.toString()A.valueOf() 方法,將參數(shù) A 轉(zhuǎn)換為原始值(Primitive)。

參考文章:

MDN JavaScript 中的相等性判斷

JavaScript高級(jí)程序設(shè)計(jì)

本部分內(nèi)容到這結(jié)束

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

歡迎關(guān)注微信公眾號(hào)【前端自習(xí)課】每天早晨,與您一起學(xué)習(xí)一篇優(yōu)秀的前端技術(shù)博文 .

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/101316.html

相關(guān)文章

  • 重溫基礎(chǔ)】19.閉包

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

    nanfeiyan 評(píng)論0 收藏0
  • 重溫基礎(chǔ)】22.內(nèi)存管理

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

    Pandaaa 評(píng)論0 收藏0
  • 重溫基礎(chǔ)】21.高階函數(shù)

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

    wua_wua2012 評(píng)論0 收藏0
  • 重溫基礎(chǔ)】5.表達(dá)式和運(yùn)算符

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

    馬忠志 評(píng)論0 收藏0
  • 重溫基礎(chǔ)】20.事件

    摘要:本文是重溫基礎(chǔ)系列文章的第二十篇。事件捕獲為截獲事件提供機(jī)會(huì),然后實(shí)際的目標(biāo)接收到事件,最后事件冒泡,對(duì)事件作出響應(yīng)。事件處理事件處理,即響應(yīng)某個(gè)事件。包括導(dǎo)致事件的元素事件類型等其他信息。 本文是 重溫基礎(chǔ) 系列文章的第二十篇。 這是第三個(gè)基礎(chǔ)系列的第一篇,歡迎持續(xù)關(guān)注呀! 重溫基礎(chǔ) 系列的【初級(jí)】和【中級(jí)】的文章,已經(jīng)統(tǒng)一整理到我的【Cute-JavaScript】的Java...

    Blackjun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<