JavaScript數(shù)值類型知識(shí)匯總
整數(shù)
- 十進(jìn)制
- 二進(jìn)制
以零為開(kāi)頭,后面接一個(gè)小寫(xiě)或大寫(xiě)的拉丁文字母B(0b或者是0B)
- 八進(jìn)制
以0開(kāi)頭,然后是八進(jìn)制數(shù)字序列(0-7) , 如果字面值中的數(shù)值超出范圍,那么前導(dǎo)0將被忽略,后面的數(shù)值當(dāng)作十進(jìn)制解析。
- 十六進(jìn)制
十六進(jìn)制字面值的前兩位必須是 0x,后跟任何十六進(jìn)制數(shù)字(0~9 及 A~F)。其中,字母 A~F可以大寫(xiě),也可以小寫(xiě);
浮點(diǎn)數(shù)
保存浮點(diǎn)數(shù)需要的內(nèi)存空間是保存整數(shù)值的兩倍,因此ECMAScript會(huì)不失時(shí)機(jī)的將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)值。
var floatNum1 = 1.; // 小數(shù)點(diǎn)后面沒(méi)有數(shù)字——解析為 1 var floatNum2 = 10.0; // 整數(shù)——解析為 10
默認(rèn)會(huì)將小數(shù)點(diǎn)后面帶有6個(gè)零以上的浮點(diǎn)數(shù)值轉(zhuǎn)換為以e表示法表示的數(shù)值;
浮點(diǎn)數(shù)值的最高精度是17位小數(shù);
數(shù)值范圍
最大值Number.MAX_VALUE 1.7976931348623157e+308
最小值Number.MIN_VALUE 5e-324
- Number.MIN_VALUE < var1 < Number.MAX_VALUE , isFinite(var1)返回false, 否則返回true
- 如果值超過(guò)了js數(shù)值范圍,那么這個(gè)數(shù)值自動(dòng)被轉(zhuǎn)換成特殊的Infinity值。實(shí)際情況 Number.MAX_VALUE + 1 還等于 Number.MAX_VALUE;
- isFinite()函數(shù)判斷數(shù)值是否位有窮,參數(shù)位于最小與最大數(shù)值之間時(shí)會(huì)返回 true
NaN
- 任何涉及 NaN 的操作(例如 NaN/10)都會(huì)返回 NaN
- NaN 與任何值都不相等,包括 NaN 本身
- 實(shí)際上只有 0 除以 0 才會(huì)返回 NaN,正數(shù)除以 0 返回 Infinity,負(fù)數(shù)除以 0 返回-Infinity
- isNaN() 。在接收到一個(gè)值之后,會(huì)嘗試將這個(gè)值轉(zhuǎn)換為數(shù)值。也適用于對(duì)象,先調(diào)用對(duì)象的valueOf()判斷是否能轉(zhuǎn)成數(shù)值,若不能調(diào)用toString()再測(cè)試返回值。
數(shù)值轉(zhuǎn)換
有 3 個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值: Number()、 parseInt()和 parseFloat()
Number()
- 如果是boolean類型, true返回1,false返回0;
- 如果是數(shù)值,只是簡(jiǎn)單的傳入返回;
- 如果是null,返回0
- 如果是undefined, 返回NaN;
- 如果是字符串,字符串如果只包含數(shù)字,則將其轉(zhuǎn)換成十進(jìn)制數(shù);如果是有效的浮點(diǎn)格式,將其轉(zhuǎn)換成對(duì)應(yīng)的浮點(diǎn)數(shù)值;如果是二進(jìn)制或十六進(jìn)制將其轉(zhuǎn)換成對(duì)應(yīng)的十進(jìn)制數(shù)值;
alert(Number("3.14e5")); // 314000 alert(Number("0b1111")); // 15, 將二進(jìn)制轉(zhuǎn)換為十進(jìn)制 alert(Number("017")); // 17, 不會(huì)轉(zhuǎn)為8進(jìn)制 alert(Number("0x1a")); // 26, 轉(zhuǎn)換為16進(jìn)制 alert(Number("")); // 空字符串,返回0 alert(Number("1a")); // 返回NaN
6.如果是對(duì)象,調(diào)用對(duì)象的valueOf()方法,然后依照前面規(guī)則轉(zhuǎn)換,如果valueOf返回值是NaN,則調(diào)用toString()方法,再依照前面的規(guī)則轉(zhuǎn)換返回的字符串
parseInt()
第一個(gè)參數(shù),要解析的數(shù)值字符串;第二個(gè)參數(shù)采用多少進(jìn)制,不指定基數(shù)意味著讓 parseInt()決定如何解析輸入的字符串;
- 如果第一個(gè)字符不是數(shù)字字符或者負(fù)號(hào), parseInt()就會(huì)返回 NaN;
- parseInt()轉(zhuǎn)換空字符串會(huì)返回 NaN
- 如果第一個(gè)字符是數(shù)字字符, parseInt()會(huì)繼續(xù)解析第二個(gè)字符,直到解析完所有后續(xù)字符或者遇到了一個(gè)非數(shù)字字符。
parseInt("1234blue") // 1234, blue忽略 parseInt("22.5"); // 22
parseInt不能解析二進(jìn)制的數(shù)值,在ES5中,也不能解析八進(jìn)制的數(shù)值;
parseInt("0b1111"); // 0 parseInt("071"); // 71,
parseFloat()
- parseFloat()只解析十進(jìn)制值,因此它沒(méi)有用第二個(gè)參數(shù);
- 從第一個(gè)字符(位置 0)開(kāi)始解析每個(gè)字符。而且也是一直解析到字符串末尾,或者解析到遇見(jiàn)一個(gè)無(wú)效的浮點(diǎn)數(shù)字字符為止;
- 它始終都會(huì)忽略前導(dǎo)的零
var num1 = parseFloat("1234blue"); //1234 (整數(shù)) var num2 = parseFloat("0xA"); //0 var num3 = parseFloat("22.5"); //22.5 var num4 = parseFloat("22.34.5"); //22.34 var num5 = parseFloat("0908.5"); //908.5 var num6 = parseFloat("3.125e7"); //31250000
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Javascript基礎(chǔ)學(xué)習(xí)筆記(菜鳥(niǎo)必看篇)
下面小編就為大家?guī)?lái)一篇Javascript基礎(chǔ)學(xué)習(xí)筆記(菜鳥(niǎo)必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07原生JavaScript來(lái)實(shí)現(xiàn)對(duì)dom元素class的操作方法(推薦)
這篇文章主要介紹了原生JavaScript來(lái)實(shí)現(xiàn)對(duì)dom元素class的操作方法,提供了代碼toggleClass的測(cè)試?yán)?,具體操作步驟大家可查看下文的詳細(xì)講解,感興趣的小伙伴們可以參考一下。2017-08-08簡(jiǎn)單談?wù)刯avascript中this的隱式綁定
在JavaScript中,this 的概念比較復(fù)雜。除了在面向?qū)ο缶幊讨?,this 還是隨處可用的。這篇文章介紹了this的隱式綁定,希望大家能夠喜歡。2016-02-02