摘要:所以能用的地方盡量用,相等運(yùn)算符隱藏的類型轉(zhuǎn)換,會(huì)帶來(lái)一些違反直覺(jué)的結(jié)果。
這是在國(guó)外的一道面試題看到的,大家先自己想一下,在什么情況下這個(gè)判斷會(huì)成立?
按正常思維想,這個(gè)是不可能成立的,但nothing is impossible,首先貼上正確答案代碼
const a = { i: 1, toString: function () { return a.i++; } } console.log(a == 1 && a == 2 && a == 3)
這里做判斷時(shí),首先會(huì)調(diào)用valueOf函數(shù),數(shù)組調(diào)用valueOf后返回的還是數(shù)組本身,就會(huì)再次調(diào)用toString函數(shù),這里是重寫了toString方法,并且return的是a.i++,所以每調(diào)用一次,都會(huì)在上次的值得基礎(chǔ)上自加一次,
所以結(jié)果為true。
那么舉一反三,這道題再變一下,“a===1 && a===2 && a===3 為true”改成這樣,還能不能成立呢?
最后結(jié)果:
這是因?yàn)椤?==”代表全等(嚴(yán)格運(yùn)算符),即值和類型都相等,其原理為“===”不會(huì)進(jìn)行隱式轉(zhuǎn)換,所以也就不會(huì)調(diào)用valueOf等方法了,而“==”為值相等(相等運(yùn)算符),所以在比較不同類型的數(shù)據(jù)時(shí),相等運(yùn)算符會(huì)先將數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換,然后再用嚴(yán)格相等運(yùn)算符比較。
所以能用“===”的地方盡量用“===”,相等運(yùn)算符隱藏的類型轉(zhuǎn)換,會(huì)帶來(lái)一些違反直覺(jué)的結(jié)果。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/105129.html
摘要:閉包正確的說(shuō)應(yīng)該是指一個(gè)閉包域每當(dāng)聲明了一個(gè)函數(shù)它就產(chǎn)生了一個(gè)閉包域可以解釋為每個(gè)函數(shù)都有自己的函數(shù)棧每個(gè)閉包域?qū)ο蠖加幸粋€(gè)不是屬性內(nèi)默認(rèn)有個(gè)名為的全局引用有了這個(gè)引用就可以直接調(diào)用的屬性或方法凡是在閉包域內(nèi)聲明的變量或方法外部無(wú)法直接訪問(wèn) 閉包 正確的說(shuō),應(yīng)該是指一個(gè)閉包域,每當(dāng)聲明了一個(gè)函數(shù),它就產(chǎn)生了一個(gè)閉包域(可以解釋為每個(gè)函數(shù)都有自己的函數(shù)棧),每個(gè)閉包域(Function...
摘要:收集的一些前端面試題從面試題發(fā)現(xiàn)不足,進(jìn)而查漏補(bǔ)缺,比通過(guò)面試更難得及各大互聯(lián)網(wǎng)公司前端筆試面試題篇及各大互聯(lián)網(wǎng)公司前端筆試面試題篇面試題個(gè)和個(gè)經(jīng)典面試題前端開發(fā)面試題如何面試前端工程師很重要個(gè)變態(tài)題解析如何通過(guò)餓了么面試輕 收集的一些前端面試題 從面試題發(fā)現(xiàn)不足,進(jìn)而查漏補(bǔ)缺,比通過(guò)面試更難得 1 BAT及各大互聯(lián)網(wǎng)公司2014前端筆試面試題--Html,Css篇 2 BAT...
摘要:收集的一些前端面試題從面試題發(fā)現(xiàn)不足,進(jìn)而查漏補(bǔ)缺,比通過(guò)面試更難得及各大互聯(lián)網(wǎng)公司前端筆試面試題篇及各大互聯(lián)網(wǎng)公司前端筆試面試題篇面試題個(gè)和個(gè)經(jīng)典面試題前端開發(fā)面試題如何面試前端工程師很重要個(gè)變態(tài)題解析如何通過(guò)餓了么面試輕 收集的一些前端面試題 從面試題發(fā)現(xiàn)不足,進(jìn)而查漏補(bǔ)缺,比通過(guò)面試更難得 1 BAT及各大互聯(lián)網(wǎng)公司2014前端筆試面試題--Html,Css篇 2 BAT...
摘要:這是我在一次面試中,被面試官所提問(wèn)的一道題在這次面試題中相等指的是對(duì)象的屬性個(gè)數(shù)值相等有這樣兩個(gè)李德華張德華我能想到的一種方案解答過(guò)程的思考由于沒(méi)有,我只能通過(guò)轉(zhuǎn)化成數(shù)組進(jìn)入第二步,對(duì)象中的屬性在另一個(gè)中是否存在。 這是我在一次面試中,被面試官所提問(wèn)的一道題 在這次面試題中 相等:指的是對(duì)象的屬性個(gè)數(shù)值相等 有這樣兩個(gè)obj let obj1 = { name:李德華, ...
摘要:響應(yīng)由三個(gè)部分組成,分別是狀態(tài)行消息報(bào)頭響應(yīng)正文。詳情參考小汪之前寫的文章瀏覽器內(nèi)核之解釋器和模型解釋解釋過(guò)程是指從字符串經(jīng)過(guò)解釋器處理后變成渲染引擎內(nèi)部規(guī)則的表示過(guò)程。 showImg(https://segmentfault.com/img/remote/1460000016404846); 前言 小汪最近在看【W(wǎng)ebKit 技術(shù)內(nèi)幕】一書,說(shuō)實(shí)話,這本書寫的太官方了,不通俗易懂。...
閱讀 3291·2021-11-25 09:43
閱讀 2093·2021-09-22 10:02
閱讀 3347·2021-09-06 15:00
閱讀 2305·2019-08-30 15:56
閱讀 2356·2019-08-30 15:54
閱讀 3232·2019-08-30 14:14
閱讀 2268·2019-08-29 17:25
閱讀 2909·2019-08-29 17:16