和 背後的故事

2021-09-05 10:48:34 字數 848 閱讀 8989

"==檢查值是否相等,===檢查值和型別是否相等」,這種說法並不準確。準確的來講應該是『==』允許強制型別轉換。例如42 == '42',『42』會被強制轉換成42,所以最後 42 == 42的結果為true。

基本型別和非基本型別在==比較的時候,非基本型別會被強制轉換成相同的基本型別,然後再進行比較。數字和字串比較的時候,字串會被強制轉換成數字。例如基本型別和物件在比較的時候,物件會首先呼叫自身的valueof方法獲取乙個簡單值,用作比較。如果找不到valueof方法就會接著呼叫tostring方法。例如1 == [1],首先[1]的valueof會返回本身,所以強制型別轉換的過程中會接著呼叫tostring進行字串化。我們得到的就是 1 == '1',這時『1』會繼續強制轉化為1,最終1 == 1 結果為true。同理可得,1 == ['1']的結果也為true。相關的擴充套件還有 『1,3』== [1,3], '2,4' == ['2','4'],最終是字串之間的比較,結果均為true。

『a == 2 && a == 3』這個判斷條件會是真值嗎?由於存在強制型別轉換,這個判斷的結果有可能會是真,只要我們稍加處理就行。首先我們得排除乙個誤區,就是&&並不意味著同時,他的運算是從左到右,還是有先後順序的。只有當&&左側條件滿足的情況下才會去執行右側的表示式。所以只要左側的條件滿足,然後產生了***,就可以導致右側的條件滿足,從而使得整個表示式的結果為真值。接下來讓我們看一下**,以及運算結果。同時附上一張特殊值比較的比較表供大家了解。

LLVM和Clang背後的故事

乙個好的工具,必須要有用武之地。幾年之後,llvm的機會就來了。mac os x 10.6 snow leopard的新功能,完全得益於llvm的技術,而這乙個版本,也是將llvm推向真正成熟的重大機遇。clang於2007年開始開發,c編譯器最早完成,在2009年的時候,objective c編譯...

Linux背後的故事

上個世紀未,linux挾自由和開放的雄風狠狠火了一把,如今,經過幾年光景的歷練,linux並沒有像許多曾經紅火一時的新玩意兒那樣成為曇花一現的泡沫,而是變得更為務實和奮進,更值得我們用激賞的眼光去關注,用更大的熱忱去擁抱。linux的特點 linux是一套類unix的多使用者,多工作業系統,其伺服器...

Flappy Bird背後的故事

更多有價值的網際網路文章 曉煦分享 對於阮哈東的評價很多,懂玩家的開發者 幸運的開發者 靠zuobi成功的開發者 可能他同時具備以上3個特點,但不可忽略的是 酒香也怕巷子深 所以阮哈東還是乙個擅長營銷的開發者。google trends資料 但pewdiepie這種遊戲達人為什麼半年後才發現這款遊戲...