午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

談談JavaScript令人迷惑的==與+

瀏覽:153日期:2023-10-16 17:22:25

前言

相信很多學習過JavaScript的小伙伴都對JavaScript的==與+有一些疑惑,經(jīng)常會出現(xiàn)結果與自己想象不一樣的情況,而且也沒找到一個通用的方法,只能死記硬背,非常難受。(咦,這不就是說的我嘛,嘻嘻嘻)今天就一起來揭開它們的神秘面紗,徹底解決掉他們。

正式開始之前,先來小試牛刀一下:

null == undefined; [] == []; ’23’= 23; 45 == [45]; false == undefined; '' == [null]; {} + {}; false + 1

ToPrimitive函數(shù)

ToPrimitive是一個內(nèi)部函數(shù),用于處理類型轉換,從字面意思就知道這個函數(shù)的就是將變量轉化為基本類型的一個函數(shù)。

ToPrimitive(input, PreferredType)

第一個參數(shù)是 input,表示要轉化的值;

第二個參數(shù)是PreferredType,表示希望轉換成的類型,可為Number/String。

<p style='color:red'>當input是日期類型時,PreferredType為String,其余情況下都相當于傳入Number。</p>

當PreferredType傳入?yún)?shù)時處理步驟會有差異,處理步驟分別如下:

1.PreferredType傳入Number

(1). 如果input為基本類型,直接返回;

(2). 否則,調(diào)用valueOf方法,如果得到一個基本類值直接返回;

(3). 否則,調(diào)用toString方法,如果得到一個基本類值直接返回;

(4). 否則,JavaScript 拋出一個類型異常錯誤。

2.PreferredType傳入String

(1). 如果input為基本類型,直接返回;

(2). 否則,調(diào)用toString方法,如果得到一個基本類值直接返回;

(3). 否則,調(diào)用valueOf方法,如果得到一個基本類值直接返回;

(4). 否則,JavaScript 拋出一個類型異常錯誤。

==

上述介紹了ToPrimitive函數(shù),那么對于==的結果就能有一個清晰的認知。

我先給出一個判斷邏輯,然后再以例子進行具體分析:

1.兩邊類型一致時,基本變量就直接進行值比較,相同則為true,不同則為false,引用變量如果兩邊都指向同一個內(nèi)存地址那么返回true,否則返回false。

<p style='color:red'>特別情況:</p>

null == undefined //true 可以理解為兩值都為無效的值,所以內(nèi)部認為并無不同,所以相等 NaN == NaN //false //如果兩個symbol變量不指向同一內(nèi)存空間那么永為false,否則為true

2.兩邊類型不一致:

(1). 先調(diào)用ToPrimitive()返回基本類型;

(2). 若類型不一致,則調(diào)用ToNumber();( 這里的ToNumber也是一個內(nèi)部函數(shù),可將值轉化為數(shù)字型 )

舉兩個例子吧:

false == undefined //true //false調(diào)用ToPrimitive返回false //undefined調(diào)用ToPrimitive返回undefined //false調(diào)用ToNumber返回0 //undefined調(diào)用ToNumber返回0

45 == [45] //true //45調(diào)用ToPrimitive返回45 //[45]調(diào)用ToPrimitive返回'45' //45調(diào)用ToNumber返回45 //'45'調(diào)用ToNumber返回45

+

一元操作運算符+

+作為一元操作運算符邏輯比較簡單:先調(diào)用ToPrimitive,后調(diào)用ToNumber

+[’1’] //1 //[’1’]調(diào)用ToPrimitive返回'1' //'1'調(diào)用ToNumber返回1

+{} //NaN //{}調(diào)用ToPrimitive返回'[object Object]' //'[object Object]'調(diào)用ToNumber返回NaN

二元操作運算符+

+作為二元操作運算符邏輯如下:

兩個值分別調(diào)用ToPrimitive; 如果兩個的返回值中有一個為字符串類型,則返回兩個值toString的拼接結果; 否則返回toNumber相加的結果

null + 1 //1 //null調(diào)用ToPrimitive返回null //1調(diào)用ToPrimitive返回1 //null調(diào)用ToNumber返回0 //1調(diào)用ToNumber返回1 //0 + 1 = 1

[1, 2] + [3, 4] //'1,23,4' //[1, 2]調(diào)用ToPrimitive返回'1,2' //[3, 4]調(diào)用ToPrimitive返回'3,4' //'1,2'調(diào)用toString返回'1,2' //'3,4'調(diào)用toString返回'3,4' //'1,2' + '3,4' = '1,23,4'

以上就是談談JavaScript令人迷惑的==與+的詳細內(nèi)容,更多關于JavaScript ==和+的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 国产精品毛片一区视频播 | 99综合色 | 欧美一二区视频 | 日韩中出在线 | 成人免费毛片果冻 | 狠狠干免费视频 | 国产精品免费一区二区 | 99热香蕉 | 视频精品久久 | 日日躁夜夜躁白天躁晚上躁91 | 一级片久久 | 日韩一区二区三区视频 | 2021av| 欧美日韩精品在线观看 | 亚洲欧美自拍一区 | 欧美另类一区 | 欧美视频一区二区在线观看 | 韩国黄色录像 | 激情天堂 | 国产亚洲欧美视频 | 免费视频成人 | 在线日本中文字幕 | 国产黄色一级片 | 中文字幕在线播放一区 | 一级在线观看视频 | 欧美三级一区 | 人人搞人人爽 | 天天插天天操天天干 | 三级a视频 | 国产在线一区二区 | 欧美激情精品久久久久 | 亚洲美女在线播放 | 一级特黄特色的免费大片视频 | 国产福利视频在线观看 | 天天干天天操天天操 | 久久一级视频 | 欧美一级生活片 | 免费视频色| 亚洲最大的网站 | 香蕉久久精品 | 波多野吉衣av |