pt系列文章:自動(dòng)類型轉(zhuǎn)換-續(xù)
在上一篇文章中,我們?cè)敿?xì)講解了JavaScript中的自動(dòng)類型轉(zhuǎn)換,由于篇幅限制,沒(méi)能覆蓋到所有的轉(zhuǎn)換規(guī)則,這次準(zhǔn)備詳細(xì)講解一下。
上次我們提到了對(duì)象類型參與運(yùn)算時(shí)轉(zhuǎn)換規(guī)則:
1). 在邏輯環(huán)境中執(zhí)行時(shí),會(huì)被轉(zhuǎn)換為true
2). 在字符串環(huán)境和數(shù)字環(huán)境中,它的valueOf()方法和toString()方法會(huì)依次被調(diào)用,然后根據(jù)返回值進(jìn)行再次轉(zhuǎn)換。首先,valueOf()方法會(huì)被調(diào)用,如果其返回值是基礎(chǔ)類型,則將這個(gè)返回值轉(zhuǎn)為目標(biāo)類型,如果返回值不是基礎(chǔ)類型,則再試圖調(diào)用toString()方法,然后將返回值轉(zhuǎn)型。如果最終的返回值不是基礎(chǔ)類型,則轉(zhuǎn)型會(huì)拋出一個(gè)異常,如果是基礎(chǔ)類型,則會(huì)相應(yīng)的轉(zhuǎn)為字符串或數(shù)字。
接著上次的講,當(dāng)加號(hào)“+”作為一元操作符應(yīng)用在對(duì)象類型上面時(shí),valueOf()和toString()方法,將會(huì)有機(jī)會(huì)被調(diào)用,最終返回值會(huì)被轉(zhuǎn)為數(shù)字類型,我們因而會(huì)得到一個(gè)數(shù)字或NaN。先來(lái)看看valueOf()和toString()的調(diào)用順序:
var o = { valueOf: function() { return '3'; }, toString: function() { return '5'; } }; var foo = +o; console.log(foo); //