Javascript Number類型常見迷惑點

1:NaN(Not a Number)

表示一個本來要返回數(shù)值的操作數(shù)沒有返回數(shù)值的情況。在ECMAscript中,任何數(shù)除以0會返回NaN【ps:實際上只有0/0會返回NaN】,正(負(fù))數(shù)除以0會返回Infinity(-infinity)。

NaN本身有兩個非同尋常的特點,1、任何涉及NaN的操作(如:NaN/10)都會返回NaN,2、NaN與任何值都不想等包括NaN本身。


2、isNaN()函數(shù)

ECMAScript定義了isNaN()函數(shù),函數(shù)接受一個參數(shù),該參數(shù)可以是任何類型,用于判斷傳入的參數(shù)是否是“不是數(shù)值“。


3、數(shù)值轉(zhuǎn)換

有3個函數(shù)可以將不是非數(shù)值轉(zhuǎn)換為數(shù)值:Number()、parseInt()、parseFloat()。

Number():

轉(zhuǎn)型函數(shù)Number()可以用于任何數(shù)據(jù)類型。

Number()函數(shù)轉(zhuǎn)換規(guī)則:

a.如果是數(shù)字值,就簡單轉(zhuǎn)入和返回;

b.如果是Boolean類型,true和false分別返回1和0;

c.如果是null值,返回0;

d.如果是undefined,返回NaN;

e.如果是字符串,遵循下列規(guī)則:

如果字符串只包含數(shù)字,則直接轉(zhuǎn)換成十進制數(shù)值。(如果數(shù)字前有0會被忽略,如”0123“轉(zhuǎn)換成123)。

如果字符串中包含有效的浮點數(shù)形式,將其轉(zhuǎn)換成對應(yīng)的浮點數(shù)值(前導(dǎo)0依然會被忽略)。

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

如果字符串為空(即不包含任何字符),則轉(zhuǎn)換成0。

如果字符串是包含除上述格式以外的其他格式,則轉(zhuǎn)換為NaN。


f.如果是對象,先調(diào)用對象的valueOf()方法,然后按照前面的規(guī)則返回,如果返回結(jié)果為NaN,則再調(diào)用對象的toString()方法,再按照前面的規(guī)則轉(zhuǎn)換返回的字符串值。

另外兩個函數(shù)則專門用于把字符串轉(zhuǎn)換成數(shù)值,這3個函數(shù)對于同樣的輸入可能會有不同的返回結(jié)果。

parseInt():

parseInt()函數(shù)在轉(zhuǎn)換字符串是,更多的是看其是否符合數(shù)字模式。它會忽略字符串前面的空白字符,直到找到第一個非空白字符;如果第一個字符不是數(shù)字或者負(fù)號,parseInt()會返回NaN,也就是說parseInt()轉(zhuǎn)換空白字符會返回NaN(與Number()不同),parseFloat()也返回NaN。如果第一個是數(shù)字字符,parseInt()會繼續(xù)解析直到最后一個字符或者遇到了一個非字符。


注意:ECMAScript 5 JavaScript引擎中,parseInt()不具備解析八進制的能力,parseInt('070')輸出70!如果需要讓parseInt()函數(shù)將傳入的字符串轉(zhuǎn)換為指定進制的數(shù),可以為其傳入第二個參數(shù):轉(zhuǎn)換時使用的技術(shù)(即多少進制)。不指定基數(shù)意味著讓parseInt()自己決定如何讓解析字符串,所以為了避免錯誤的解析,建議無論什么情況下都明確指定基數(shù)。


parseFloat()函數(shù)與parseInt()函數(shù)類似,從第一個字符開始解析,一直到字符串末尾或者直到遇見第一個無效的浮點數(shù)字字符為止,解析時第一個小數(shù)點有效,第二個小數(shù)點無效。parseFloat()函數(shù)與parseInt()函數(shù)除小數(shù)點的區(qū)別外,第二個區(qū)別在于它始終會忽略前導(dǎo)的0,也就是說parseFloat()在解析十六進制數(shù)時會返回0.


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

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

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