[]==![]結(jié)果為true,[]==[]結(jié)果為false探究 == 本質(zhì)

關(guān)于==與===的區(qū)別相信大家都很清楚啦,這理解不再贅述,今天我們來(lái)看下[]==![]的結(jié)果。

這是樓主碰到過(guò)得一個(gè)面試題,恩,華麗麗的答錯(cuò)了:

[]==[] //false,這個(gè)是常識(shí),因?yàn)樵趦蛇叾际窍嗤瑪?shù)據(jù)類型時(shí),==是直接比較兩邊數(shù)據(jù),結(jié)果為false,因?yàn)閇]屬于引用類型,在兩個(gè)[]分別指向不同的堆內(nèi)存,不熟悉的引用類型的小伙伴請(qǐng)參考樓主文章:值類型引用類型;


而當(dāng)前這題:

[]==![]//true

這個(gè)結(jié)果是怎么的出來(lái)的呢?

首先我們知道,!的優(yōu)先級(jí)要大于==的,所以先運(yùn)算右邊,![]---->結(jié)果為false,

這樣[]==![]就等價(jià)于于:

[]==false

再來(lái)看,這時(shí)候==兩邊數(shù)據(jù)類型就不相等辣,我們知道,當(dāng)==兩邊數(shù)據(jù)類型不一致時(shí),要先做數(shù)據(jù)類型轉(zhuǎn)換,再判斷,

== 類型轉(zhuǎn)換規(guī)則如下:
值類型 == 值類型 //相當(dāng)于 Number(值類型) == Number(值類型)

引用類型 == 值類型 // 對(duì)象轉(zhuǎn)化成原始類型的值,再進(jìn)行比較

比較規(guī)則:數(shù)組與數(shù)值進(jìn)行比較,會(huì)先轉(zhuǎn)成數(shù)值,再進(jìn)行比較;與字符串進(jìn)行比較,會(huì)先轉(zhuǎn)成字符串,再進(jìn)行比較;與布爾值進(jìn)行比較,兩個(gè)運(yùn)算子都會(huì)先轉(zhuǎn)成數(shù)值,然后再進(jìn)行比較。

我們知道值類型之間==:

'true' == true //false,Number('true')為NAN,Number(true)為1

那么本題值類型和引用類型之間==

[] == false //相當(dāng)于,Number([])為0,Number(false)為0,

所以0==0//true。

過(guò)程:[]==![] ----> []==false -----> 0==0 --->//true

其實(shí)更詳細(xì)還可參考知乎上的一個(gè)回答:因?yàn)?[] 是對(duì)象,比較過(guò)程依ToPrimitive([]) == false 比較。ToPrimitive 默認(rèn)是調(diào)用 toString 方法的,于是 ToPrimitice([]) 等于空字符串,即''==false,然后ToNumber('')==0,即0==0,true。附鏈接:知乎Belleve用戶回答。

相等運(yùn)算符(==)隱藏的類型轉(zhuǎn)換,會(huì)帶來(lái)一些違反直覺(jué)的結(jié)果,下面整理一些:

0 == ''             // true
0 == '0'            // true
 
2 == true           // false
2 == false          // false
 
false == 'false'    // false
false == '0'        // true
 
false == undefined  // false
false == null       // false
null == undefined   // true
 
' \t\r\n ' == 0     // true
\t \r \n都是轉(zhuǎn)義字符,空格就是單純的空格,輸入時(shí)可以輸入空格
\t 的意思是 橫向跳到下一制表符位置
\r 的意思是 回車
\n 的意思是回車換行

原文鏈接:https://blog.csdn.net/qiqi_77_/article/details/79456605

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容