成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

JavaScript 的等號(hào)運(yùn)算符

iKcamp / 1990人閱讀

摘要:判斷相等的運(yùn)算符分成相等運(yùn)算符和全等運(yùn)算符,似乎和并沒(méi)有統(tǒng)一的翻譯,且把它們分成相等和全等好了。相等運(yùn)算符判斷是否相等的規(guī)則如果操作數(shù)類(lèi)型一致,且滿足全等的條件,則相等,否則不相等。類(lèi)型相同,但值不同,所以不全等。參考的等號(hào)運(yùn)算符

JavaScript 判斷相等的運(yùn)算符分成相等運(yùn)算符(==)和全等運(yùn)算符(===),似乎=====并沒(méi)有統(tǒng)一的翻譯,且把它們分成"相等"和"全等"好了。

全等運(yùn)算符

判斷是否全等的規(guī)則:

如果操作數(shù)類(lèi)型不同,那么不全等。

如果二者都是null, 全等。

如果都是undefined, 全等。

如果其中之一為NaN, 不全等。

如果二者都為truefalse, 全等。

如果都為數(shù)值且值相等,全等。

如果都為字符串,且值相等,全等。

如果都指向同一個(gè)引用類(lèi)型,全等。

其他情況,不全等。

舉例
// false, 類(lèi)型不同#1
1 === "1" 

// fasle, #4
NaN === NaN 

// false, 雖然都是空對(duì)象,但不是同一個(gè)引用類(lèi)型值
[] === []

// true, 同一個(gè)引用類(lèi)型值
var firstObject = {}
var secondObject = firstObject
secondObject["name"] = "Neo"
secondObject === firstObject 
引用類(lèi)型轉(zhuǎn)換成基本類(lèi)型

在之前的加法運(yùn)算符里面也提到過(guò)引用類(lèi)型到基本類(lèi)型的轉(zhuǎn)換,過(guò)程大致如下:

先調(diào)用valueOf方法,如果返回的是基本類(lèi)型值,轉(zhuǎn)換結(jié)束。

如果失敗了,就調(diào)用toString方法。如果返回基本類(lèi)型值,轉(zhuǎn)換結(jié)束。

否則,拋出錯(cuò)誤:TypeError: Cannot convert object to primitive value

大多數(shù)的原生對(duì)象在調(diào)用valueOf方法的時(shí)候都會(huì)返回對(duì)象自身,所以大多數(shù)時(shí)候其實(shí)都會(huì)調(diào)用toString方法。

Date對(duì)象比較特殊,它的valueOf方法返回的是毫秒數(shù),在轉(zhuǎn)換成基本類(lèi)型值的時(shí)候直接調(diào)用toString方法。

相等運(yùn)算符

判斷是否相等的規(guī)則:

如果操作數(shù)類(lèi)型一致,且滿足全等的條件,則相等,否則不相等。

如果操作數(shù)類(lèi)型不一致:

如果一個(gè)是null, 另一個(gè)是undefined, 相等。

如果一個(gè)是數(shù)字,另一個(gè)是字符串,把字符串轉(zhuǎn)換成數(shù)字再比較。

如果一個(gè)是布爾值,把true轉(zhuǎn)成1, false轉(zhuǎn)成0, 然后再比較。

如果一個(gè)是對(duì)象,另一個(gè)是數(shù)字或者字符串,把對(duì)象轉(zhuǎn)成基本類(lèi)型值再比較。

其他情況,不相等。

舉例
1 == true // true

根據(jù)條件2.3,把true轉(zhuǎn)成1。

然后兩個(gè)操作數(shù)類(lèi)型一致,滿足條件1,使用全等比較。

都為數(shù)值且相等,全等。

相等。

"" == 0 // true

根據(jù)2.2,把""轉(zhuǎn)換成數(shù)字,即0。

然后兩個(gè)操作數(shù)類(lèi)型一致,滿足條件1,使用全等比較。

都為數(shù)值且相等,全等。

相等。

null == 0 // false 

條件3,屬于其他情況,不相等。

null == undefined

條件2.1,相等。

NaN == NaN // false

類(lèi)型一致,轉(zhuǎn)換成全等比較

NaN === NaN 不成立,因此不全等

所以不相等

[""] == "" // true

條件2.4,先把數(shù)組轉(zhuǎn)換成基本類(lèi)型

比較"" == "",類(lèi)型相同,轉(zhuǎn)成全等比較

類(lèi)型相同,且值相同,全等。

相等。

{} == true // false

true轉(zhuǎn)換成1,然后對(duì)象轉(zhuǎn)換成基本類(lèi)型值,即"[object Object]" == 1

條件2.2,把字符串轉(zhuǎn)換成數(shù)字,得到NaN == 1,類(lèi)型相同,轉(zhuǎn)成全等比較。

類(lèi)型相同,但值不同,所以不全等。

不相等。

初看上去,內(nèi)容非常的繁雜,但是如果碰到的時(shí)候就來(lái)查一下,很快就能有肌肉記憶了。

參考:JavaScript 的等號(hào)運(yùn)算符

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

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

相關(guān)文章

  • javascript變量運(yùn)算符詳解

    摘要:代碼示例等號(hào)檢查,類(lèi)型轉(zhuǎn)換后返回全等檢查,由于時(shí)類(lèi)型,時(shí)類(lèi)型,類(lèi)型不同,返回關(guān)系運(yùn)算符關(guān)系運(yùn)算符執(zhí)行的是比較運(yùn)算,通常用于判斷兩個(gè)變量哪個(gè)大哪個(gè)小關(guān)系運(yùn)算符都返回一個(gè)布爾值。邏輯或運(yùn)輸符用雙豎線表示。 1.運(yùn)算符 JavaScript中常見(jiàn)的運(yùn)算符包含:賦值運(yùn)算符、算數(shù)運(yùn)算符、等性運(yùn)算符、關(guān)系運(yùn)算符、條件運(yùn)算符、布爾運(yùn)算符、邏輯運(yùn)算符…… 1.賦值運(yùn)算符 = 賦值運(yùn)算符=,用于給某個(gè)變...

    Sourcelink 評(píng)論0 收藏0
  • javascript等號(hào)判斷相等流程

    摘要:數(shù)字,類(lèi)型轉(zhuǎn)換成數(shù)字進(jìn)行比較和不會(huì)相互轉(zhuǎn)換,相等有數(shù)字類(lèi)型,和對(duì)象相比,對(duì)象用轉(zhuǎn)換成原始值進(jìn)行比較其他情況,一律返回 ===運(yùn)算符判斷相等的流程是怎樣的 類(lèi)型不同,不等 null,undefined,boolean,number這四個(gè)類(lèi)型的只要值(數(shù)值)相等,就相等,-0 === 0 //true 只要其中有一個(gè)為NAN,則不等 string類(lèi)型,長(zhǎng)度/內(nèi)容/編碼不同,都是不等,相...

    RyanQ 評(píng)論0 收藏0
  • js雙等號(hào)探索(三): [] == false為T(mén)rue,而!![] == false為False

    摘要:所以為為第二步轉(zhuǎn)成根據(jù)文檔比較操作符如果一個(gè)對(duì)象與數(shù)字或字符串相比較,會(huì)嘗試返回對(duì)象的默認(rèn)值。嘗試將數(shù)字字面量轉(zhuǎn)換為數(shù)字類(lèi)型的值。 [] == false; //為T(mén)rue !![] == false; //為False 一、[] == false為T(mén)rue 第一步 轉(zhuǎn)成[] == 0 根據(jù) MDN Web 文檔-比較操作符:https://developer.mozilla.org...

    DrizzleX 評(píng)論0 收藏0
  • js雙等號(hào)探索(一): [] == ![]為T(mén)ure ?

    摘要:所以為第四步轉(zhuǎn)成根據(jù)文檔比較操作符當(dāng)比較數(shù)字和字符串時(shí),字符串會(huì)轉(zhuǎn)換成數(shù)字值。嘗試將數(shù)字字面量轉(zhuǎn)換為數(shù)字類(lèi)型的值。最后位所以為其他鏈接 [] == ![] //為T(mén)rue 第一步 轉(zhuǎn)成[] == false 根據(jù) MDN Web 文檔-運(yùn)算符優(yōu)先級(jí):[https://developer.mozilla.org...](https://developer.mozilla.org...s...

    CollinPeng 評(píng)論0 收藏0
  • js雙等號(hào)探索(二): a==3&&a==4 為true ?

    摘要:前言為是可以實(shí)現(xiàn)的。在中,非對(duì)象參數(shù)將被視為一個(gè)凍結(jié)的普通對(duì)象,因此會(huì)返回。注意所以一定要是對(duì)象,如果是非對(duì)象的其他基本類(lèi)型如,,被視為凍結(jié)對(duì)象,不能重寫(xiě),則不起效果。第四步為這時(shí)已經(jīng)為,運(yùn)行返回值也為。最后為如上所示為,為,則為其他鏈接 前言 a==3 && a==4為T(mén)rue是可以實(shí)現(xiàn)的。具體代碼如下所示: let a=[]; var x=3; a.valueOf=()=>{ ...

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

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

0條評(píng)論

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