數(shù)值轉(zhuǎn)換
有3個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:Number()、parselnt()和parseFloat()。第一個(gè)函數(shù),即轉(zhuǎn)型函數(shù)Number可莉羽哥手荏-f據(jù)類型,而另兩個(gè)函數(shù)則專門用于把字符串轉(zhuǎn)換成數(shù)值。這3個(gè)函數(shù)對(duì)于同樣的輸入會(huì)有返回不同的結(jié)果。
Number()函數(shù)的轉(zhuǎn)換規(guī)則如下。
口如果是Boolean值,true和false將分別被轉(zhuǎn)換為1和0;
口如果是數(shù)字值,只是簡(jiǎn)單的傳人和返回;
口如果是null值,返回O;
口如果是undefined,返回NaN;
口如果是字符串,遵循下列規(guī)則:
如果字符串中只包含數(shù)字,則將其轉(zhuǎn)換為十進(jìn)制數(shù)值,即”1”會(huì)變成1,”123”會(huì)變成123,而”011”會(huì)變成11(注意:前導(dǎo)的零被忽略了);
_如果字符串中包含有效的浮點(diǎn)格式,如”1.1",則將其轉(zhuǎn)換為對(duì)應(yīng)的浮點(diǎn)數(shù)值(同樣,也會(huì)忽略前導(dǎo)零);
_如果字符串中包含有效的十六進(jìn)制格式,例如”O(jiān)xf”,則將其轉(zhuǎn)換為相同大小的十進(jìn)制整數(shù)值;
-如果字符串是空的(不包含任何字符),則將其轉(zhuǎn)換為0;
_如果字符串中包含除上述格式之外的字符,則將其轉(zhuǎn)換為NaN。
如果是對(duì)象,則調(diào)用對(duì)象的valueOf()方法,然盾依照前面的規(guī)則轉(zhuǎn)換返回的值。如果轉(zhuǎn)換的結(jié)果是NaN,則調(diào)用對(duì)象的toString()方法,然后再次依照前面的規(guī)則轉(zhuǎn)換返回的字符串值。
根據(jù)這么多的規(guī)則使用Number()把各種數(shù)據(jù)類型轉(zhuǎn)換為數(shù)值確實(shí)有點(diǎn)復(fù)雜。下面還是給出幾個(gè)具體的例子吧:
var numl=Number( "Hello world!”); //NaN
var num2=Number(””); //0
var num3=Number( "000011");//11
var num4=NLunber(true);
首先,字符串”Hello world!”會(huì)被轉(zhuǎn)換為NaN,因?yàn)槠渲胁话魏斡幸饬x的數(shù)字值。空字符串會(huì)被轉(zhuǎn)換為0。字符串”000011”會(huì)被轉(zhuǎn)換為11,因?yàn)楹雎粤似淝皩?dǎo)的零。最后,true值被轉(zhuǎn)換為l。
南昌網(wǎng)絡(luò)公司百恒網(wǎng)絡(luò)前端開(kāi)發(fā)工程師認(rèn)為:由于Number()函數(shù)在轉(zhuǎn)換字符串時(shí)比較復(fù)雜而且不夠合理,因此在處理整數(shù)的時(shí)候更常用的是parselnt()函數(shù)。parse工nt()函數(shù)在轉(zhuǎn)換字符串時(shí),更多的是看其是否符合數(shù)值模式。它會(huì)忽略字 符串前面的空格,直至找到第一個(gè)非空格字符。如果第一個(gè)字符不是數(shù)字字符或者負(fù)號(hào),parselnt()就會(huì)返回NaN;也就是說(shuō),用parselnt()轉(zhuǎn)換窒字符串會(huì)返回Na可u曲萏耶碉至季符返回o)。如 果第一個(gè)字符是數(shù)字字符,parselnt()會(huì)繼續(xù)解析第二個(gè)字符,直到解析完所有后續(xù)字符或者遇到了一個(gè)非數(shù)字字符。例如,”123 4blue”會(huì)被轉(zhuǎn)換為1234,因?yàn)椤眀lue”會(huì)被完全忽略。類似地,”22.5" 會(huì)被轉(zhuǎn)換為22,因?yàn)樾?shù)點(diǎn)并不是有效的數(shù)字字符。
南昌做網(wǎng)站公司百恒網(wǎng)絡(luò)前端開(kāi)發(fā)工程師總結(jié):如果字符串中的第一個(gè)字符是數(shù)字字符,parselnt()也能夠識(shí)別出各種整數(shù)格式(即前面討論的十進(jìn)制、八進(jìn)制和十六進(jìn)制數(shù))。也就是說(shuō),如果字符串以”O(jiān)x”開(kāi)頭且后跟數(shù)字字符,就會(huì)將其當(dāng) 作一個(gè)十六進(jìn)制整數(shù);如果字符串以”o”開(kāi)頭且后跟數(shù)字字符,則會(huì)將其當(dāng)作一個(gè)八進(jìn)制數(shù)來(lái)解析。
為了更好地理解parse工nt()函數(shù)的轉(zhuǎn)換規(guī)則,下面給出一些例子:
var numl=parselnt( "1234blue”); 11 1234
var num2=parselnt(””) //NaN
希望對(duì)廣大站長(zhǎng)或網(wǎng)站建設(shè)公司或從事企業(yè)網(wǎng)站建設(shè)的團(tuán)隊(duì)有所幫助,如對(duì)此不太理解的,可以與南昌網(wǎng)絡(luò)公司百恒網(wǎng)絡(luò)技術(shù)部聯(lián)系。我們很高與廣大站長(zhǎng)和網(wǎng)站建設(shè)公司技術(shù)人員分享我們的技術(shù)和經(jīng)驗(yàn)。