JS 數(shù)字轉(zhuǎn)換研究總結(jié)
更新時(shí)間:2013年12月26日 18:04:33 作者:
這篇文章主要介紹了JS 數(shù)字轉(zhuǎn)換實(shí)現(xiàn)方法,需要的朋友可以參考下
JS 轉(zhuǎn)換數(shù)據(jù)為數(shù)字的方法有三類五種,包括:
•強(qiáng)制轉(zhuǎn)換,JS 的基本數(shù)據(jù)類型都這以這樣轉(zhuǎn)換成對(duì)應(yīng)的類型(Number(v))
•原生函數(shù),這兩個(gè)函數(shù)有不一樣的結(jié)果(parseInt(v,radix)、parseFloat(v))
•隱式轉(zhuǎn)換,在執(zhí)行的時(shí)候 JS 會(huì)轉(zhuǎn)換變量為對(duì)應(yīng)類型(位計(jì)算,數(shù)學(xué)計(jì)算)
轉(zhuǎn)換的原值也可以簡(jiǎn)單分為三類:對(duì)象、特殊值、字符串。
JS 中的特殊值包括以下幾個(gè)。
•undefined,未定義,當(dāng)變量聲明但沒(méi)賦值或者一個(gè)對(duì)象不存在的屬性的值就是這個(gè)了。
•NaN/Infinity,這是兩個(gè)頑固的“數(shù)字”(typeof == number),分別表示非數(shù)字和無(wú)限大的數(shù)。貌似沒(méi)什么用,轉(zhuǎn)換成數(shù)字失敗的話,返回值基本是NaN。
•null,當(dāng)成零值用的對(duì)象(typeof == object)。
•true/false,布爾值,表示真、假,等價(jià)于1/0。
對(duì)于字符串,根據(jù)內(nèi)容還可以進(jìn)行細(xì)分。根據(jù) JS 數(shù)字表達(dá)式,可以分為合法和非法。合法的數(shù)字有幾種不同的分類方法:
•符號(hào):正號(hào)、負(fù)號(hào)、無(wú)符號(hào)
•進(jìn)制:八進(jìn)制、十進(jìn)制、十六進(jìn)制
•科學(xué)記數(shù)法
•小數(shù)、整數(shù),以及小數(shù)的簡(jiǎn)寫(xiě)
根據(jù)上面的分類,我制作了一個(gè) Demo,用來(lái)測(cè)試不同方法、數(shù)值轉(zhuǎn)換后的結(jié)果。下面的截圖是在 chrome 下的轉(zhuǎn)換。

看結(jié)果只有位計(jì)算能把任何值轉(zhuǎn)換為有限數(shù)(isFinite),數(shù)學(xué)計(jì)算和強(qiáng)制轉(zhuǎn)換的結(jié)果是一樣的。
特殊值的轉(zhuǎn)換和原值以及轉(zhuǎn)換方法都有關(guān)系。parseInt/parseFloat 全部轉(zhuǎn)換失敗,返回 NaN。
•NaN/undefined 用其它方法全轉(zhuǎn)換成 NaN;
•Infinity 被 parseInt 轉(zhuǎn)換成 NaN,剩下的方法不改變它的值;
•null/false/true 不能被 parseInt/parseFloat 轉(zhuǎn)換,返回 NaN。
對(duì)字符串的轉(zhuǎn)換分析主要看轉(zhuǎn)換方法,但全部方法都不支持八進(jìn)制表示的數(shù)字,而是當(dāng)成對(duì)應(yīng)的十進(jìn)制數(shù)。
•邏輯計(jì)算轉(zhuǎn)換除負(fù)十六進(jìn)制數(shù)外的合法表達(dá)式,并舍去小數(shù)部分;不合法的表達(dá)式返回零。
•數(shù)學(xué)計(jì)算/Number 和邏輯計(jì)算類似,但不舍去小數(shù);除空字符串外的不合法表達(dá)式返回 NaN。
•parseInt 也是只保留整數(shù)部分;但是對(duì)不合法的表達(dá)式,取字符串前面合法的整數(shù)(十進(jìn)制、十六進(jìn)制,不包括科學(xué)記數(shù)法)部分轉(zhuǎn)換,沒(méi)有則返回 NaN。
•parseFloat 和 parseInt 類似,不同的是能識(shí)別并保留小數(shù)部分,并且不支持十六進(jìn)制數(shù)。
•強(qiáng)制轉(zhuǎn)換,JS 的基本數(shù)據(jù)類型都這以這樣轉(zhuǎn)換成對(duì)應(yīng)的類型(Number(v))
•原生函數(shù),這兩個(gè)函數(shù)有不一樣的結(jié)果(parseInt(v,radix)、parseFloat(v))
•隱式轉(zhuǎn)換,在執(zhí)行的時(shí)候 JS 會(huì)轉(zhuǎn)換變量為對(duì)應(yīng)類型(位計(jì)算,數(shù)學(xué)計(jì)算)
轉(zhuǎn)換的原值也可以簡(jiǎn)單分為三類:對(duì)象、特殊值、字符串。
JS 中的特殊值包括以下幾個(gè)。
•undefined,未定義,當(dāng)變量聲明但沒(méi)賦值或者一個(gè)對(duì)象不存在的屬性的值就是這個(gè)了。
•NaN/Infinity,這是兩個(gè)頑固的“數(shù)字”(typeof == number),分別表示非數(shù)字和無(wú)限大的數(shù)。貌似沒(méi)什么用,轉(zhuǎn)換成數(shù)字失敗的話,返回值基本是NaN。
•null,當(dāng)成零值用的對(duì)象(typeof == object)。
•true/false,布爾值,表示真、假,等價(jià)于1/0。
對(duì)于字符串,根據(jù)內(nèi)容還可以進(jìn)行細(xì)分。根據(jù) JS 數(shù)字表達(dá)式,可以分為合法和非法。合法的數(shù)字有幾種不同的分類方法:
•符號(hào):正號(hào)、負(fù)號(hào)、無(wú)符號(hào)
•進(jìn)制:八進(jìn)制、十進(jìn)制、十六進(jìn)制
•科學(xué)記數(shù)法
•小數(shù)、整數(shù),以及小數(shù)的簡(jiǎn)寫(xiě)
根據(jù)上面的分類,我制作了一個(gè) Demo,用來(lái)測(cè)試不同方法、數(shù)值轉(zhuǎn)換后的結(jié)果。下面的截圖是在 chrome 下的轉(zhuǎn)換。

看結(jié)果只有位計(jì)算能把任何值轉(zhuǎn)換為有限數(shù)(isFinite),數(shù)學(xué)計(jì)算和強(qiáng)制轉(zhuǎn)換的結(jié)果是一樣的。
特殊值的轉(zhuǎn)換和原值以及轉(zhuǎn)換方法都有關(guān)系。parseInt/parseFloat 全部轉(zhuǎn)換失敗,返回 NaN。
•NaN/undefined 用其它方法全轉(zhuǎn)換成 NaN;
•Infinity 被 parseInt 轉(zhuǎn)換成 NaN,剩下的方法不改變它的值;
•null/false/true 不能被 parseInt/parseFloat 轉(zhuǎn)換,返回 NaN。
對(duì)字符串的轉(zhuǎn)換分析主要看轉(zhuǎn)換方法,但全部方法都不支持八進(jìn)制表示的數(shù)字,而是當(dāng)成對(duì)應(yīng)的十進(jìn)制數(shù)。
•邏輯計(jì)算轉(zhuǎn)換除負(fù)十六進(jìn)制數(shù)外的合法表達(dá)式,并舍去小數(shù)部分;不合法的表達(dá)式返回零。
•數(shù)學(xué)計(jì)算/Number 和邏輯計(jì)算類似,但不舍去小數(shù);除空字符串外的不合法表達(dá)式返回 NaN。
•parseInt 也是只保留整數(shù)部分;但是對(duì)不合法的表達(dá)式,取字符串前面合法的整數(shù)(十進(jìn)制、十六進(jìn)制,不包括科學(xué)記數(shù)法)部分轉(zhuǎn)換,沒(méi)有則返回 NaN。
•parseFloat 和 parseInt 類似,不同的是能識(shí)別并保留小數(shù)部分,并且不支持十六進(jìn)制數(shù)。
相關(guān)文章
php和js對(duì)數(shù)據(jù)庫(kù)圖片進(jìn)行等比縮放示例
這篇文章主要介紹了php和js如何對(duì)數(shù)據(jù)庫(kù)圖片進(jìn)行等比縮放,需要的朋友可以參考下2014-04-04H5基于iScroll實(shí)現(xiàn)下拉刷新和上拉加載更多
這篇文章主要為大家詳細(xì)介紹了H5基于iScroll實(shí)現(xiàn)下拉刷新和上拉加載更多效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07JavaScript & jQuery完美判斷圖片是否加載完畢
本文主要介紹了JavaScript & jQuery完美判斷圖片是否加載完畢的方法。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01JavaScript獲取和設(shè)置CheckBox狀態(tài)的簡(jiǎn)單方法
這篇文章介紹了JavaScript獲取和設(shè)置CheckBox狀態(tài)的簡(jiǎn)單方法,有需要的朋友可以參考一下2013-07-07僅一個(gè)form表單 js實(shí)現(xiàn)注冊(cè)信息依次填寫(xiě)提交功能
這篇文章主要為大家詳細(xì)介紹了僅一個(gè)form表單,JavaScript可實(shí)現(xiàn)注冊(cè)信息依次填寫(xiě)提交功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06原生js canvas實(shí)現(xiàn)簡(jiǎn)單貪吃蛇
這篇文章主要為大家詳細(xì)介紹了原生js canvas實(shí)現(xiàn)簡(jiǎn)單貪吃蛇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03ECharts餅圖顏色設(shè)置的4種方式總結(jié)
這篇文章主要給大家介紹了關(guān)于ECharts餅圖顏色設(shè)置的4種方式,ECharts餅圖的顏色可以通過(guò)多種方式進(jìn)行設(shè)置,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09