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