【JavaScript中的類型轉(zhuǎn)換】

JavaScript中的類型轉(zhuǎn)換


字符串轉(zhuǎn)換為數(shù)字的方法

字符串轉(zhuǎn)換為數(shù)字的方法可以分為兩種,一個(gè)是顯式轉(zhuǎn)換,一種是隱式轉(zhuǎn)換。

顯式轉(zhuǎn)換是通過(guò)函數(shù)的形式,將字符串轉(zhuǎn)換成數(shù)組的形式;

隱式轉(zhuǎn)換則是通過(guò)運(yùn)算符的方式將字符串轉(zhuǎn)換成數(shù)字的形式。


顯式轉(zhuǎn)換

在顯式轉(zhuǎn)換中,有三個(gè)函數(shù)可以把字符串轉(zhuǎn)換為數(shù)值:Number()、parseInt()、parseFloat()。

Number()可以用于任何數(shù)據(jù)類型,而另外兩個(gè)函數(shù)則專門用于把字符串轉(zhuǎn)換成數(shù)值。


Number()轉(zhuǎn)換規(guī)則如下:

如果字符串為數(shù)值字符串,則將其轉(zhuǎn)換為十進(jìn)制數(shù)值。

如果字符串中包含有效的十六進(jìn)制格式,例如"0xf",則將其轉(zhuǎn)換為相同大小的十進(jìn)制整數(shù)值。

如果字符串為空字符串或空格字符串,則將其轉(zhuǎn)換為0。

如果字符串中含有除上述格式以外的字符,則將其轉(zhuǎn)換成NaN。

例如:

console.log(Number("?"));?//?0

console.log(Number("123"));?//?123

console.log(Number("HTML5學(xué)堂"));?//?NaN

console.log(Number("0xf"));?//?15


parseInt()函數(shù)在轉(zhuǎn)換字符串時(shí),更多的是看其是否符合數(shù)值模式。它會(huì)忽略字符串前面的空格,直至找到第一個(gè)非空格字符。如果第一個(gè)字符不是數(shù)字字符或者負(fù)號(hào),parseInt()就會(huì)返回NaN,如果是空字符串,則會(huì)返回NaN。如果第一個(gè)字符是數(shù)字字符,parseInt()會(huì)繼續(xù)解析第二個(gè)字符,直到解析完所有后續(xù)字符或者遇到非數(shù)字字符。例如"1234h5course"會(huì)被轉(zhuǎn)換成1234,"h5course"會(huì)被完全忽略。類似的,"123.4"會(huì)被轉(zhuǎn)換成123,因?yàn)樾?shù)點(diǎn)并不是有效的數(shù)字字符。如果字符串中包含有效的十六進(jìn)制格式,例如"0xf",則將其轉(zhuǎn)換為相同大小的十進(jìn)制整數(shù)值。例如:

console.log(parseInt(""));?//?NaN

console.log(parseInt("123h5course"));?//?123

console.log(parseInt("????123"));?//?123

console.log(parseInt("123"));?//?123

console.log(parseInt("123.7"));?//?123

console.log(parseInt("0xf"));?//?15


parseFloat()與parseInt()函數(shù)相似,只不過(guò)parseInt()返回的是整數(shù),而parseFloat()可以返回小數(shù)。parseFloat()轉(zhuǎn)換的時(shí)候,也是從第一個(gè)字符開(kāi)始解析每個(gè)字符,直到解析到字符串末尾,或者解析到遇見(jiàn)一個(gè)無(wú)效的浮點(diǎn)數(shù)字字符為止,也就是說(shuō),字符串中的第一個(gè)小數(shù)點(diǎn)是有效的,而第二個(gè)小數(shù)點(diǎn)就是無(wú)效的。例如"12.34.56"將會(huì)被轉(zhuǎn)換為12.34。如果字符串包含的是一個(gè)可解析為整數(shù)的數(shù),parseFloat()回返回整數(shù)。例如:

console.log(parseFloat(""));?//?NaN

console.log(parseInt("123.4h5course"));?//?123.4

console.log(parseInt("????123"));?//?123

console.log(parseInt("123.45"));?//?123.45

console.log(parseInt("123.7"));?//?123.7

console.log(parseInt("123.75.67"));?//?123.75

console.log(parseInt("0xf"));?//?15


隱式轉(zhuǎn)換

隱式轉(zhuǎn)換的方式可以通過(guò)+、* 1、/ 1的運(yùn)算來(lái)轉(zhuǎn)換成數(shù)字。例如:

var?a?=?"123";

var?b?=?"456";

var?c?=?"789";

a?=?+a;

b?=?b?*?1;

c?=?c?/?1;

console.log(a);?//?123

console.log(b);?//?456

console.log(c);?//?789


其他類型變量轉(zhuǎn)換為字符串的方法

十進(jìn)制轉(zhuǎn)換成二進(jìn)制

例:var a = 302;

console.log(a.toString(2));

toString( )<括號(hào)里面的數(shù)字是幾就轉(zhuǎn)換成幾進(jìn)制>

我們想把其他類型變量轉(zhuǎn)換成字符串,這個(gè)時(shí)候,我們通常使用toString()方法。幾乎每一個(gè)值都有toString()方法。例如:

var?a?=?123;

var?bool?=?true;

console.log(a.toString());?//?"123"

console.log(bool.toString());?//?"true"


數(shù)值、布爾值、對(duì)象和字符串都有toString()方法,但null和undefined沒(méi)有這個(gè)方法。我們還可以使用轉(zhuǎn)型函數(shù)String(),這個(gè)函數(shù)能夠?qū)⑷魏晤愋偷闹缔D(zhuǎn)換成字符串。例如:

var?obj?=?null;

console.log(String(obj));?//?"null"

var?unde?=?undefined;

console.log(String(unde));?//?"undefined"

var?a?=?123;

console.log(String(a));?//?"123"

var?bool?=?true;

console.log(String(bool));?//?"true"

最后編輯于
?著作權(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)容