關於JavaScript中的==與!的轉換問題

最近遇到了一道頗有趣的JavaScript試題,感受頗有趣。記錄一下省得之後面試遇到面試

題目是:

console.log([]==![],{}==!{},[]==!{},{}==![])

這道題考察的主要是==號的隱式轉換,算法

對象不管在有沒有數據的狀況下都爲true,因此當console.log({}==!{})時至關於true==!true因此結果爲false。數組

當用雙等號判斷[]==[]時是按照ToNumber算法來轉換的,空數組[]用ToNumber算法轉換成0也就是false,而!運算符是使用ToBoolean算法來轉換的應爲空數組也是對象因此[]轉化成!true,因此console.log([]==[])時至關於false==false,因此結果爲true.code

一樣的道理最後console.log({} == []),應爲對象不管在何種狀況下都爲true,而[]採用ToBoolean算法來轉換,至關於!true,因此結果至關於true == !true結果爲false。對象

相關文章
相關標籤/搜索