先做個小測試,不要百度和寫程式碼測試
下面的輸出都是什麼
1 + 1
'1' + 1
1 + true
NaN + 1
NaN + '1'
null + 1
null + '1'
[1] + 1
[1,2] + [1]
[1] + {n : 1}
如果說你對上面這些運算有一些模糊不清的地方,那麼估計你加法隱式轉換沒有搞清楚
加法運算的規則到底是什麼呢
一張圖讓你明明白白
ok,我們來看個例子
看著上面的圖來捋一捋
兩邊都是原始類型,都不是字串,所以都要轉為數字類型
相當於 0 + NaN,所以最後結果是 NaN
再比如上面裡的 [1] + 1
是含有物件類型的,要調用 valueOf
調用之後不是原始類型,那就要調用 toString
轉成原始類型了,走上面的步驟,含有字串,全部轉為字串相加,所以結果是 '11'
再看一個例子
它這裡報錯了,提示無法把這個物件轉換為原始類型,這是因為 valueOf 和 toString 無法把 obj 轉換為原始類型
這些東西,往往會出現在面試題裡面,考察你對知識點有沒有理解到位,大家努力吧