成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端碎碎念 之 為什么[] == ![] ?

isaced / 3197人閱讀

摘要:判斷步驟如下如果有一個操作數(shù)是布爾值,則在比較相等性之前先將其轉(zhuǎn)換為數(shù)值轉(zhuǎn)換為,而轉(zhuǎn)換為。實際上是對比運用上面的順序,是布爾值,所以轉(zhuǎn)化為數(shù)值為。

『前端碎碎念』系列會記錄我平時看書或者看文章遇到的問題,一般都是比較基礎(chǔ)但是容易遺忘的知識點,你也可能會在面試中碰到。 我會查閱一些資料并可能加上自己的理解,來記錄這些問題。更多文章請前往我的個人博客

類似標(biāo)題中的問題還有很多,例如:

為什么 [ ] == false 而 !![ ] == true

or

[1] == [1] 是true 還是 false?

如果對 == 操作符一知半解,就很難解答類似的問題。我們直接開門見山,看看==是如何工作的,這里的難點主要涉及到j(luò)s中的隱式強制類型轉(zhuǎn)換。

判斷步驟如下:

如果有一個操作數(shù)是布爾值,則在比較相等性之前先將其轉(zhuǎn)換為數(shù)值----false轉(zhuǎn)換為0,而true轉(zhuǎn)換為1。

如果一個操作數(shù)是字符串,另一個操作數(shù)是數(shù)值,在比較相等性之前先將字符串轉(zhuǎn)換為數(shù)值。

如果一個操作數(shù)是對象,另一個操作數(shù)不是,則調(diào)用對象的valueOf()方法,如果得到的值不是基本類型值,則基于返回值再調(diào)用toString方法(這個過程即ToPrimitive),用得到的基本類型值按照前面的規(guī)則進(jìn)行比較。

如果兩個操作數(shù)都是對象,則比較他們是不是同一個對象。如果兩個操作數(shù)指向同一個對象,則相等操作符返回true, 否則返回false。

這兩個操作符在進(jìn)行比較時則要遵循下列規(guī)則。

null 和 undefined 是相等的。

要比較相等性之前,不能將null和undefined轉(zhuǎn)換成其他任何值

如果有一個操作數(shù)是NaN,則相等操作符返回false, 而不相等操作符則返回true, NaN != NaN

我畫了一個圖來表示這個過程:

根據(jù)上面的步驟,來分析[] == ![] 為什么會返回true

[] == ![]

!運算符的優(yōu)先級大于 ==,所以實際上這里還涉及到!的運算。
這個比較簡單!會將后面的值轉(zhuǎn)化為布爾值。即![]變成!Boolean([]), 也就是!true,也就是false。

實際上是對比 [] == false;

運用上面的順序,false是布爾值,所以轉(zhuǎn)化為數(shù)值Number(flase), 為0。

對比[] == 0;

滿足第三條規(guī)則[] 是對象(數(shù)組也屬于對象),0不是對象。所以ToPrimitive([])是""

對比"" == 0;

滿足第二條規(guī)則,"" 是字符串,0是數(shù)值,對比Number("") == 0, 也就是 0 == 0。

所以得出 [] == ![]

我們可以用同樣的方法對上面提到的兩個等式例子進(jìn)行判斷,都能得出結(jié)論。雖然過程有點麻煩,但是本質(zhì)上就是將兩邊的比較值轉(zhuǎn)化為數(shù)值進(jìn)行比較。讀者可以自行嘗試實踐。

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/81954.html

相關(guān)文章

  • 前端碎碎 [] + {} 和 {} + []一樣嗎?

    摘要:前端碎碎念系列會記錄我平時看書或者看文章遇到的問題,一般都是比較基礎(chǔ)但是容易遺忘的知識點,你也可能會在面試中碰到。當(dāng)兩個操作數(shù)都是數(shù)值時,執(zhí)行常規(guī)的數(shù)值加法計算。關(guān)鍵還是要加深對中對數(shù)值轉(zhuǎn)換的理解,以不變應(yīng)萬變。 『前端碎碎念』系列會記錄我平時看書或者看文章遇到的問題,一般都是比較基礎(chǔ)但是容易遺忘的知識點,你也可能會在面試中碰到。 我會查閱一些資料并可能加上自己的理解,來記錄這些問題...

    Soarkey 評論0 收藏0
  • 前端碎碎 nextTick, setTimeout 以及 setImmediate 三者的執(zhí)行

    摘要:更多文章請前往我的個人博客這個問題是有關(guān)執(zhí)行順序和的。其中,整體代碼,可以理解為待執(zhí)行的所有代碼。當(dāng)隊列執(zhí)行完后再執(zhí)行一個任務(wù)。然后再次回到新的事件循環(huán)。所以兩個執(zhí)行完后隊列里只剩下第一個里的。 『前端碎碎念』系列會記錄我平時看書或者看文章遇到的問題,一般都是比較基礎(chǔ)但是容易遺忘的知識點,你也可能會在面試中碰到。 我會查閱一些資料并可能加上自己的理解,來記錄這些問題。更多文章請前往我...

    Cciradih 評論0 收藏0
  • 盒模型的一些碎碎

    摘要:盒模型的簡介本文簡單的總結(jié)了一些基本概念,知識點以及細(xì)節(jié)問題作為前端人員,盒模型是最基礎(chǔ)的知識點,在排版與布局時不可避免與盒模型打交道。 1. 盒模型的簡介 本文簡單的總結(jié)了一些基本概念,知識點以及細(xì)節(jié)問題 作為前端人員,盒模型是最基礎(chǔ)的知識點,在排版與布局時不可避免與盒模型打交道。 在我們編寫HTML時,網(wǎng)頁上的內(nèi)容幾乎都是被包在一個個元素(當(dāng)然也可以叫做標(biāo)簽)中的,最常見的有div...

    王偉廷 評論0 收藏0
  • 無關(guān)緊要的碎碎

    摘要:在美國和一些其他發(fā)達(dá)國家,程序員已經(jīng)從一個相對高端的行業(yè)變成越來越多普通人的日常。是五十個編輯推薦話題之一軟件開發(fā)者是美國四個州最常見的職業(yè)圖片來源我們不難設(shè)想,把軟件開發(fā)的工作自動化掉,對相關(guān)企業(yè)來說將會是一個多么巨大的誘惑。 在美國和一些其他發(fā)達(dá)國家,程序員已經(jīng)從一個相對高端的行業(yè)變成越來越多普通人的日常。 JavaScript 是 Medium 五十個編輯推薦話題之一: http...

    wangjuntytl 評論0 收藏0

發(fā)表評論

0條評論

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