- JavaScript重難點(diǎn)實(shí)例精講
- 周雄
- 6字
- 2020-10-30 15:51:52
1.2 Number類型詳解
1.2.1 Number類型介紹
在JavaScript中,Number類型的數(shù)據(jù)既包括了整型數(shù)據(jù),也包括了浮點(diǎn)型數(shù)據(jù)。
下面講解整型數(shù)據(jù)的處理規(guī)則。最基本的數(shù)值采用的是十進(jìn)制整數(shù),另外,數(shù)值還可以通過八進(jìn)制或者十六進(jìn)制表示。
① 八進(jìn)制。如果想要用八進(jìn)制表示一個(gè)數(shù)值,那么首位必須是0,其他位必須是0~7的八進(jìn)制序列。如果后面位數(shù)的字面值大于7,則破壞了八進(jìn)制數(shù)據(jù)表示規(guī)則,前面的0會(huì)被忽略,當(dāng)作十進(jìn)制數(shù)據(jù)處理。
var num1 = 024; // 20 var num2 = 079; // 79
其中num1首位為0,表示八進(jìn)制數(shù),然后判斷后面每位數(shù)值在0~7內(nèi),符合八進(jìn)制數(shù)據(jù)表示規(guī)則,最后將其轉(zhuǎn)換為十進(jìn)制數(shù)值2×8 + 4 = 20。
num2首位為0,表示八進(jìn)制數(shù),然后判斷后面每位的數(shù)值,最后一位9超出了八進(jìn)制字面值,所以不屬于八進(jìn)制數(shù)據(jù),最終按照十進(jìn)制處理,結(jié)果為79。
② 十六進(jìn)制。如果想要用十六進(jìn)制表示一個(gè)數(shù)值,那么前兩位必須是0x,其他位必須是十六進(jìn)制序列(0~9,a~f或者A~F)。如果超過了十六進(jìn)制序列,則會(huì)拋出異常。
var num3 = 0x3f; // 63 var num4 = 0x2g; // SyntaxError: Invalid or unexpected token
其中num3前兩位為0x,表示十六進(jìn)制數(shù)據(jù),然后判斷后面每位均屬于十六進(jìn)制字面值區(qū)間,符合十六進(jìn)制數(shù)表示,最后將其轉(zhuǎn)換為十進(jìn)制數(shù)值3×16+15=63。
num4前兩位為0x,表示十六進(jìn)制數(shù)據(jù),然后判斷后面每位數(shù)值,最后一位g超出了十六進(jìn)制所能表示的字面值區(qū)間,所以不滿足十六進(jìn)制數(shù)據(jù)表示規(guī)則,最終拋出異常“SyntaxError:Invalid or unexpected token”。
此外,和Boolean類型一樣,當(dāng)其他類型在與Number類型進(jìn)行數(shù)據(jù)轉(zhuǎn)換時(shí),也會(huì)遵循一定的規(guī)則。
(1)Boolean類型轉(zhuǎn)換為Number類型
· true轉(zhuǎn)換為1。
· false轉(zhuǎn)換為0。
(2)Null類型轉(zhuǎn)換為Number類型
· Null類型只有一個(gè)字面值null,直接轉(zhuǎn)換為0。
(3)Undefined類型轉(zhuǎn)換為Number類型
· Undefined類型只有一個(gè)字面值undefined,直接轉(zhuǎn)換為NaN。
(4)String類型轉(zhuǎn)換為Number類型
· 如果字符串中只包含數(shù)字,則會(huì)轉(zhuǎn)換成十進(jìn)制數(shù);如果前面有0,會(huì)直接省略掉,例如"0123"會(huì)轉(zhuǎn)換為123。
· 如果字符串中包含的是有效的浮點(diǎn)數(shù),則同樣按照十進(jìn)制轉(zhuǎn)換,例如"1.23"會(huì)轉(zhuǎn)換為1.23。
· 如果字符串中包含有效的十六進(jìn)制格式,則會(huì)按照十進(jìn)制轉(zhuǎn)換,例如"0x3f"會(huì)轉(zhuǎn)換為63。
· 如果是空字符串,則轉(zhuǎn)換為0。
· 如果字符串中包含了除上述格式以外的字符串,則會(huì)直接轉(zhuǎn)換為NaN。
(5)Object類型轉(zhuǎn)換為Number類型
· Object類型在轉(zhuǎn)換為Number類型時(shí),會(huì)優(yōu)先調(diào)用valueOf()函數(shù),然后通過valueOf()函數(shù)的返回值按照上述規(guī)則進(jìn)行轉(zhuǎn)換。如果轉(zhuǎn)換的結(jié)果是NaN,則調(diào)用toString()函數(shù),通過toString()函數(shù)的返回值重新按照上述規(guī)則進(jìn)行轉(zhuǎn)換;如果有確定的Number類型返回值,則結(jié)束,否則返回“NaN”。
Number類型作為一種常用的基本數(shù)據(jù)類型,開發(fā)人員在使用時(shí)往往會(huì)因?yàn)闆]有理解到原理而踩到一些隱形坑。接下來就講解在使用Number類型數(shù)據(jù)或者函數(shù)時(shí),需要注意的一些點(diǎn)。
- 構(gòu)建移動(dòng)網(wǎng)站與APP:HTML 5移動(dòng)開發(fā)入門與實(shí)戰(zhàn)(跨平臺(tái)移動(dòng)開發(fā)叢書)
- Web交互界面設(shè)計(jì)與制作(微課版)
- Python Game Programming By Example
- OpenCV for Secret Agents
- 用Python實(shí)現(xiàn)深度學(xué)習(xí)框架
- 移動(dòng)界面(Web/App)Photoshop UI設(shè)計(jì)十全大補(bǔ)
- 零基礎(chǔ)學(xué)Python網(wǎng)絡(luò)爬蟲案例實(shí)戰(zhàn)全流程詳解(入門與提高篇)
- Julia高性能科學(xué)計(jì)算(第2版)
- INSTANT Adobe Edge Inspect Starter
- Kivy Cookbook
- Android應(yīng)用開發(fā)深入學(xué)習(xí)實(shí)錄
- Selenium WebDriver Practical Guide
- PHP+MySQL Web應(yīng)用開發(fā)教程
- TypeScript全棧開發(fā)
- 軟件測(cè)試(慕課版)