摘要:在項(xiàng)目開發(fā)中我們經(jīng)常會(huì)用到轉(zhuǎn)型方法,尤其是這種松散型的語(yǔ)言。其中比較常用的方法就是方法和方法了,下面我們分別對(duì)這幾種方法的轉(zhuǎn)型機(jī)制進(jìn)行詳細(xì)地說明。
在項(xiàng)目開發(fā)中我們經(jīng)常會(huì)用到轉(zhuǎn)型方法,尤其是JS這種松散型的語(yǔ)言。其中比較常用的方法就是Number()方法和ParseInt()/ParseFloat()方法了,下面我們分別對(duì)這幾種方法的轉(zhuǎn)型機(jī)制進(jìn)行詳細(xì)地說明。
Number()
如果傳入的參數(shù)為字符串,則遵循以下規(guī)則:
如果字符串中只包含數(shù)字,則返回相應(yīng)的數(shù)字值(前導(dǎo)的0會(huì)被忽略)
如果包含浮點(diǎn)和負(fù)號(hào),則返回相應(yīng)的小數(shù)或負(fù)數(shù)
如果是16進(jìn)制數(shù)字,則返回相應(yīng)的10進(jìn)制數(shù)
如果包含空格,則開始和結(jié)束的空格會(huì)被忽略,如果中間包含空格則會(huì)返回NaN
如果是空字符串,則返回0
如果包含除去以上情況的其它字符,則返回NaN
如果傳入的參數(shù)為true/false,則返回1/0
如果傳入的參數(shù)為null,則返回0
如果傳入的參數(shù)為undefined,則返回NaN
如果是數(shù)字,則簡(jiǎn)單的返回?cái)?shù)字值
如果是對(duì)象,則調(diào)用對(duì)象的valueOf()方法,將所得值按照以上規(guī)則進(jìn)行轉(zhuǎn)型,如果得到NaN,再調(diào)用對(duì)象的toString()方法,將所得的值按以上規(guī)則進(jìn)行轉(zhuǎn)型
總體來說Number()方法的轉(zhuǎn)型機(jī)制比較復(fù)雜且難懂,一般我們手動(dòng)調(diào)用轉(zhuǎn)型方法會(huì)使用parseInt()/parseFloat()方法進(jìn)行轉(zhuǎn)型,下面介紹這兩個(gè)方法的轉(zhuǎn)型機(jī)制。
parseInt()/parseFloat()如果傳入的參數(shù)為字符串,則則從第0個(gè)位置開始,找到第一個(gè)非空格字符,如果第一個(gè)非空格字符不是數(shù)字或-號(hào),則返回NaN,如果是數(shù)字或-號(hào),則繼續(xù)往下尋找,直到找到非數(shù)字字符,然后忽略后面的內(nèi)容,返回前面找到的數(shù)字值(前導(dǎo)的空格會(huì)被忽略,中間的空格則會(huì)當(dāng)成非數(shù)字字符處理)
如果是boolean,null,undefined類型值,則返回NaN
如果需要對(duì)8進(jìn)制或者16進(jìn)制的數(shù)進(jìn)行轉(zhuǎn)型,ECMAScript 3和ECMAScript 5有所不同,所以推薦傳入第二個(gè)參數(shù),即進(jìn)制數(shù)
如果是對(duì)象,則調(diào)用對(duì)象的toString()方法,將所得值再按照以上方法進(jìn)行轉(zhuǎn)型
*以上只說明了parseInt()方法的機(jī)制,parseFloat()方法與其只有一個(gè)區(qū)別,即parseFloat()方法遇到第一個(gè)浮點(diǎn)會(huì)繼續(xù)往下尋找
下面舉一些典型的例子,對(duì)以上機(jī)制進(jìn)行驗(yàn)證和說明
console.log(Number("12a")); //NaN console.log(Number("")); //0 console.log(Number(null)); //0 console.log(Number(undefined)); //NaN console.log(Number(true)); //1 console.log(Number(false)); //0 console.log(Number([]); //0 console.log(parseInt("-1-2a")); //-1 console.log(parseInt("-a2a")); //NaN console.log(parseInt(" 12a")); //12 console.log(parseInt("1 2a")); //1 console.log(parseInt("")); //NaN console.log(parseInt(null)); //NaN console.log(parseInt(undefined));//NaN console.log(parseInt(true)); //NaN console.log(parseInt(false)); //NaN console.log(parseInt([])); //NaN
以上便是所總結(jié)的Number()和parseInt()/parseFloat()方法的轉(zhuǎn)型機(jī)制,特別說明:大部分規(guī)則摘自《JavaScript高級(jí)程序設(shè)計(jì)第三版》。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/82179.html
摘要:數(shù)值轉(zhuǎn)換對(duì)個(gè)人而言是非常重要的,這也是本人單獨(dú)拉出來總結(jié)的一個(gè)原因。在此也僅針對(duì)顯示轉(zhuǎn)換做點(diǎn)文章,隱式轉(zhuǎn)換同樣會(huì)單獨(dú)拉出來總結(jié)有個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值和。如果是值,和將分別被轉(zhuǎn)換為和。如果是數(shù)字值,只是簡(jiǎn)單的傳入和返回。 數(shù)值轉(zhuǎn)換對(duì)個(gè)人而言是非常重要的,這也是本人單獨(dú)拉出來總結(jié)的一個(gè)原因。在此也僅針對(duì)顯示轉(zhuǎn)換做點(diǎn)文章,隱式轉(zhuǎn)換同樣會(huì)單獨(dú)拉出來總結(jié) 有 3 個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為...
摘要:函數(shù)在轉(zhuǎn)換字符串時(shí),更多的是看其是否符合數(shù)值模式。例如,會(huì)被轉(zhuǎn)換為,因?yàn)闀?huì)被完全忽略。類似地,會(huì)被轉(zhuǎn)換為,因?yàn)樾?shù)點(diǎn)并不是有效的數(shù)字字符。指定基數(shù)會(huì)影響到轉(zhuǎn)換的輸出結(jié)果。舉例來說,將會(huì)被轉(zhuǎn)換為。但十六進(jìn)制格式的字符串則始終會(huì)被轉(zhuǎn)換成。 以下三個(gè)函數(shù)將非數(shù)值轉(zhuǎn)換為數(shù)值:Number() 、parseInt()和 parseFloat() Number()的轉(zhuǎn)換規(guī)則 Boolean值 ...
摘要:本文主要介紹數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換和自動(dòng)轉(zhuǎn)換,自動(dòng)轉(zhuǎn)換是基于強(qiáng)制轉(zhuǎn)換之上。強(qiáng)制轉(zhuǎn)換主要指使用和三個(gè)函數(shù),手動(dòng)將各種類型的值,分布轉(zhuǎn)換成數(shù)字字符串或者布爾值。 前言 JavaScript是一門動(dòng)態(tài)語(yǔ)言,所謂的動(dòng)態(tài)語(yǔ)言可以暫時(shí)理解為在語(yǔ)言中的一切內(nèi)容都是不確定的。比如一個(gè)變量,這一時(shí)刻是個(gè)整型,下一時(shí)刻可能會(huì)變成字符串了。雖然變量的數(shù)據(jù)類型是不確定的,但是各種運(yùn)算符對(duì)數(shù)據(jù)類型是有要求的。如果運(yùn)算...
摘要:本文主要介紹數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換和自動(dòng)轉(zhuǎn)換,自動(dòng)轉(zhuǎn)換是基于強(qiáng)制轉(zhuǎn)換之上。強(qiáng)制轉(zhuǎn)換主要指使用和三個(gè)函數(shù),手動(dòng)將各種類型的值,分布轉(zhuǎn)換成數(shù)字字符串或者布爾值。 前言 JavaScript是一門動(dòng)態(tài)語(yǔ)言,所謂的動(dòng)態(tài)語(yǔ)言可以暫時(shí)理解為在語(yǔ)言中的一切內(nèi)容都是不確定的。比如一個(gè)變量,這一時(shí)刻是個(gè)整型,下一時(shí)刻可能會(huì)變成字符串了。雖然變量的數(shù)據(jù)類型是不確定的,但是各種運(yùn)算符對(duì)數(shù)據(jù)類型是有要求的。如果運(yùn)算...
摘要:本文主要介紹數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換和自動(dòng)轉(zhuǎn)換,自動(dòng)轉(zhuǎn)換是基于強(qiáng)制轉(zhuǎn)換之上。強(qiáng)制轉(zhuǎn)換主要指使用和三個(gè)函數(shù),手動(dòng)將各種類型的值,分布轉(zhuǎn)換成數(shù)字字符串或者布爾值。 前言 JavaScript是一門動(dòng)態(tài)語(yǔ)言,所謂的動(dòng)態(tài)語(yǔ)言可以暫時(shí)理解為在語(yǔ)言中的一切內(nèi)容都是不確定的。比如一個(gè)變量,這一時(shí)刻是個(gè)整型,下一時(shí)刻可能會(huì)變成字符串了。雖然變量的數(shù)據(jù)類型是不確定的,但是各種運(yùn)算符對(duì)數(shù)據(jù)類型是有要求的。如果運(yùn)算...
閱讀 2515·2021-11-18 10:02
閱讀 1984·2021-11-09 09:45
閱讀 2426·2021-09-26 09:47
閱讀 1024·2021-07-23 10:26
閱讀 1068·2019-08-30 15:47
閱讀 3361·2019-08-30 15:44
閱讀 968·2019-08-30 15:43
閱讀 887·2019-08-29 13:50