欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

談?wù)凧avaScript令人迷惑的==與+

 更新時(shí)間:2020年08月31日 05:01:54   作者:leomo  
這篇文章主要介紹了JavaScript中==與+的使用方法,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下

前言

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

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

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

ToPrimitive函數(shù)

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

ToPrimitive(input, PreferredType)

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

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

<p style="color:red">當(dāng)input是日期類型時(shí),PreferredType為String,其余情況下都相當(dāng)于傳入Number。</p>

當(dāng)PreferredType傳入?yún)?shù)時(shí)處理步驟會(huì)有差異,處理步驟分別如下:

1.PreferredType傳入Number

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

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

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

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

2.PreferredType傳入String

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

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

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

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

==

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

我先給出一個(gè)判斷邏輯,然后再以例子進(jìn)行具體分析:

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

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

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

2.兩邊類型不一致:

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

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

舉兩個(gè)例子吧:

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

+

一元操作運(yùn)算符+

+作為一元操作運(yùn)算符邏輯比較簡單:先調(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

二元操作運(yùn)算符+

+作為二元操作運(yùn)算符邏輯如下:

  1. 兩個(gè)值分別調(diào)用ToPrimitive;
  2. 如果兩個(gè)的返回值中有一個(gè)為字符串類型,則返回兩個(gè)值toString的拼接結(jié)果;
  3. 否則返回toNumber相加的結(jié)果
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"

以上就是談?wù)凧avaScript令人迷惑的==與+的詳細(xì)內(nèi)容,更多關(guān)于JavaScript ==和+的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JS無限樹狀列表實(shí)現(xiàn)代碼

    JS無限樹狀列表實(shí)現(xiàn)代碼

    本人水平有限,這么個(gè)東東想了好幾天才弄出來個(gè)半成品,還有一些問題沒有解決,先放上來存著備忘,也望高手指點(diǎn)一二。
    2011-01-01
  • JS應(yīng)用正則表達(dá)式轉(zhuǎn)換大小寫示例

    JS應(yīng)用正則表達(dá)式轉(zhuǎn)換大小寫示例

    這篇文章主要介紹了JS應(yīng)用正則表達(dá)式轉(zhuǎn)換大小寫,以首字母大寫,其它字母小寫為例,喜歡的朋友可以參考下
    2014-09-09
  • 微信小程序?qū)崿F(xiàn)手勢解鎖的示例詳解

    微信小程序?qū)崿F(xiàn)手勢解鎖的示例詳解

    手勢解鎖是生活中常用的解鎖方式,本文將通過微信小程序?qū)崿F(xiàn)手勢解鎖這一功能,本實(shí)例以工具的形式可以嵌入到不同的項(xiàng)目之中,感興趣的可以了解一下
    2022-04-04
  • 小程序中實(shí)現(xiàn)excel數(shù)據(jù)的批量導(dǎo)入的示例代碼

    小程序中實(shí)現(xiàn)excel數(shù)據(jù)的批量導(dǎo)入的示例代碼

    本文主要介紹了小程序中實(shí)現(xiàn)excel數(shù)據(jù)的批量導(dǎo)入的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • javascript中基本類型和引用類型的區(qū)別分析

    javascript中基本類型和引用類型的區(qū)別分析

    大多數(shù)人系統(tǒng)學(xué)習(xí)過的程序設(shè)計(jì)語言,在這些語言的學(xué)習(xí)過程中最早學(xué)到的幾個(gè)要點(diǎn)之一就是值類型和引用類型的區(qū)別。下面我們來看一下在 JavaScript 中基本數(shù)據(jù)類型(Primitive Types)和引用類型(Reference Types)的區(qū)別。
    2015-05-05
  • JavaScript之filter_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    JavaScript之filter_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    filter也是一個(gè)常用的操作,它用于把Array的某些元素過濾掉,然后返回剩下的元素。下面通過實(shí)例代碼給大家簡答介紹下javascript中的filter,需要的的朋友參考下吧
    2017-06-06
  • js加入收藏以及使用Jquery更改透明度

    js加入收藏以及使用Jquery更改透明度

    本文為大家提供一段加入收藏的js代碼以及實(shí)用Jquery更改對象透明度的代碼,需要的朋友可以參考下
    2014-01-01
  • js調(diào)試工具Console命令詳解

    js調(diào)試工具Console命令詳解

    這篇文章主要介紹了js調(diào)試工具Console命令詳解,需要的朋友可以參考下
    2014-10-10
  • JavaScript中cookie工具函數(shù)封裝的示例代碼

    JavaScript中cookie工具函數(shù)封裝的示例代碼

    這篇文章給大家主要介紹了JavaScript中cookie工具函數(shù)的封裝,文中給出了詳細(xì)的實(shí)現(xiàn)步驟和示例代碼,相信會(huì)對大家的理解很有幫助,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • javascript實(shí)現(xiàn)類似百度分享功能的方法

    javascript實(shí)現(xiàn)類似百度分享功能的方法

    這篇文章主要介紹了javascript實(shí)現(xiàn)類似百度分享功能的方法,以實(shí)例形式較為完整的分析了基于javascript實(shí)現(xiàn)百度分享功能所涉及的樣式與分享功能實(shí)現(xiàn)方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07

最新評論