JS 強(qiáng)制類型轉(zhuǎn)換

一、前言

上一篇學(xué)習(xí)了JavaScript的七種數(shù)據(jù)類型,那么這些類型之間的可以相互轉(zhuǎn)換?轉(zhuǎn)換的方法有哪些?
下面總結(jié)

二、類型轉(zhuǎn)換

JavaScript 作為一門弱類型語(yǔ)言,類型轉(zhuǎn)換是其中一個(gè)重要的語(yǔ)言特性,勢(shì)必需要掌握。

1. 附上JS 類型轉(zhuǎn)換一覽表

JS 類型轉(zhuǎn)換一覽表.png

2. 轉(zhuǎn)為 number 類型

1)使用 Number(xxx) 函數(shù)
Number('1024')     // 1024
Number('2.3')      // 2.3
Number('1s024')    // NaN

Number('0b100')    // 4
Number('0x59')     // 89
Number('0o23')     // 19

Number('true')     // NaN
Number(true)       // 1
Number(false)      // 0

Number(null)       // 0
Number('null')     // NaN
Number(undefined)  // NaN

Number()           // 0
Number('')         // 0
Number('     ')    // 0
Number('    23')   // 23(會(huì)忽略字符串開(kāi)頭和結(jié)尾的空格)等價(jià)于 Number('23')

① 傳入?yún)?shù) xxx 的值可以是 字符串、布爾值、null
② 字符串轉(zhuǎn)為數(shù)字,字符串中的內(nèi)容可以是不同進(jìn)制的格式(以0b 或 0x 或 0o 或 0B 或 0X 或 0O 開(kāi)頭的合法數(shù)字)
③ 當(dāng) Number(xxx) 轉(zhuǎn)換失敗時(shí),則返回NaN(表示非數(shù)字)
④ 當(dāng)n為空串或全是空格的字符串nullfalse時(shí),Number(n) 轉(zhuǎn)換后為 0

2)parseInt(string, radix) —— 將字符串轉(zhuǎn)為整數(shù)
parseInt('10.24', 10)    // 10
parseInt('0x59')         // 0
parseInt('100', 2)       // 4
parseInt('100', 5)       // 25

parseInt('10.24e3', 10)  // 10
parseInt('1024e3', 10)   // 1024

parseInt(true)           // NaN
parseInt(null)           // NaN
parseInt()               // NaN
parseInt('     ')        // NaN(會(huì)忽略字符串開(kāi)頭和結(jié)尾的空格)等價(jià)于 parseInt('') 

① 第一個(gè)參數(shù)為字符串,非字符串會(huì)自動(dòng)轉(zhuǎn)為字符串;第二個(gè)參數(shù) radix 表示第一個(gè)參數(shù)字符串是幾進(jìn)制的格式,即進(jìn)制的基數(shù),為一個(gè)介于2和36之間的整數(shù),ES5規(guī)定默認(rèn)為10(最好都要指定radix的值,不然可能出現(xiàn)不希望的BUG) 。
解析字符串中的有效整數(shù),將其轉(zhuǎn)換為 number 。
③【具體】從第一個(gè)參數(shù)字符串(忽略開(kāi)頭和結(jié)尾的空格)的第1個(gè)字符開(kāi)始截取,遇到非有效整數(shù)的字符時(shí)終止,將截取到的字符串轉(zhuǎn)換為十進(jìn)制數(shù)字返回。如果截取到的字符串為空串時(shí),則返回NaN(轉(zhuǎn)換失?。?。
④【有效整數(shù)的字符】**正負(fù)號(hào)(+或-) 整數(shù)(0~基數(shù)-1) **,即二進(jìn)制為 [+/-] (0~1),八進(jìn)制為 [+/-] (0~7),十進(jìn)制為 [+/-] (0~9),十六進(jìn)制為 [+/-] (0~F),36進(jìn)制為 [+/-] (0~Z),字母不區(qū)分大小寫。
⑤ 將整型數(shù)值以特定基數(shù)轉(zhuǎn)換成它的字符串值可以使用 intValue.toString(radix) 。

3)parseFloat(string) —— 將字符串轉(zhuǎn)為浮點(diǎn)數(shù)
parseFloat('10.24')      // 10.24

parseFloat('10.24e3')    // 10240
parseFloat('1024e3')     // 1024000

parseFloat('1m0.24e3')   // 1
parseFloat('A010')       // NaN

parseFloat(true)         // NaN
parseFloat(null)         // NaN
parseFloat('     ')      // NaN(會(huì)忽略字符串開(kāi)頭和結(jié)尾的空格)等價(jià)于 parseFloat('')

① 只接收一個(gè)參數(shù),即待轉(zhuǎn)換的字符串,非字符串會(huì)自動(dòng)轉(zhuǎn)為字符串。
截取字符串中的有效數(shù)字,將其轉(zhuǎn)換為 number 。
③【具體】從字符串(忽略開(kāi)頭和結(jié)尾的空格)的第1個(gè)字符開(kāi)始截取,遇到非有效數(shù)字的字符時(shí)終止,將截取到的字符串轉(zhuǎn)換為十進(jìn)制數(shù)字返回。如果截取到的字符串為空串時(shí),則返回NaN(轉(zhuǎn)換失?。?br> ④【有效數(shù)字的字符】正負(fù)號(hào)(+或-)、數(shù)字(0-9)、小數(shù)點(diǎn) 或者 科學(xué)記數(shù)法中的指數(shù)(e或E) 。
⑤ NaN 是 number類型的一個(gè)特殊值,可以調(diào)用 isNaN(parseInt('1s')) 判斷。

3. 轉(zhuǎn)為 object 類型(又稱引用類型)

從JS類型轉(zhuǎn)換一覽表中可以看出,將基本類型轉(zhuǎn)換為 object 類型使用的方法是調(diào)用某構(gòu)造函數(shù)。

new String(1024)    // String {"1024"}
new Boolean(1024)   // Boolean {true}
new Boolean(NaN)    // Boolean {false}

new Number(1024)    // Number {1024}
new Number('ko')    // Number {NaN}
new Number('098')   // Number {98}
new Number('0o77')  // Number {63}
new Number('0b100') // Number {4}

三、基本類型與對(duì)象

內(nèi)存又分為堆內(nèi)存和棧內(nèi)存,就內(nèi)存分配而言,基本類型是存放于棧內(nèi)存 stack 中,而對(duì)象是存放在堆內(nèi)存 Heap 中,其堆中存放的地址再存放于棧內(nèi)存中(如下圖)。

內(nèi)存中的基本類型與對(duì)象.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容