[TOC]
>[success] # Number類型
八進制:逢八進1
十進制:即1.滿十進一,滿二十進二,以此類推....
>[success] ## 浮點數值
~~~
所謂'浮點數',就是該'數值中必須包含一個小數點,并且小數點后面必須至少有一位數字'
var floatNum1 = 1.1;
var floatNum2 = 0.1;
var floatNum3 = .1; // 有效但是不推薦
'浮點數值占用內存空間是整數值得2倍',所以下面的寫法會自動轉換成整數
var floatNum1 = 1.;
var floatNum2 = 10.0;
~~~
<br/>
>[success] ## 數值范圍
~~~
由于內存的限制,如果js中出現的值特別小就會是'-Infinity(負無窮)',特別大的話就是'Infinity(正無窮)',如果經過某次
計算返回了正或負的 Infinity值,那么該值無法繼續進行下一次計算。
console.log(Number.NEGATIVE_INFINITY) // 負無窮
console.log(Number.POSITIVE_INFINITY) // 正無窮
'isFinite()'方法會檢測一個數值是否為正(負)無窮數,如果是的話返回false
console.log(isFinite(Number.NEGATIVE_INFINITY)) // false
console.log(isFinite(Number.POSITIVE_INFINITY)) // false
~~~
<br/>
>[success] ## NaN
~~~
在其他語言中任何數值除以非數值都會導致錯誤,從而停止代碼執行,但是'js中任何數值除以非數值都會返回NaN',因此不會影響
其他代碼的執行
NaN與任何數字都不相等,包括自己
console.log(NaN == NaN) // false
~~~
<br/>
>[success] ## isNaN判斷是否為數字
~~~
變量的值為'NaN'用'typeof'檢測的結果也是'number'類型,'isNaN'可以用來判斷是否為數字
~~~
~~~
isNaN等于number類型的值都會返回false,但是如果isNaN(false),他就會返回false,這樣就就錯了,所以要像下面這樣寫:
if(typeof a === 'number' && isNaN(a) === false){
alert('等于數字')
}else{
alert('非數字')
}
console.log(isNaN(NaN)) // true
console.log(isNaN(10)) // false(10是一個數值)
console.log(isNaN("10")) // false(可以被轉換成數值10)
console.log(isNaN("blue")) // true(不能轉換成數值)
console.log(isNaN(true)) // false(可以被轉換成數值1)
~~~
<br/>
>[success] ## isNaN判斷對象是否為空對象
之前在 [Null類型篇章](http://www.hmoore.net/wangjiachong/javascript/1272737) 說過用來判斷 “ 是否存在null的方法 ” 來確認這個變量中是否存在對象,其實isNaN也適用于對象,可以用來判斷對象是否有值,如下:
~~~
var a = null // false
var a = {} // true
console.log(isNaN(a))
~~~
<br/>
>[success] ## 數值轉換
~~~
有'3'個函數可以把'非數值轉換為數值':Number()、parseInt()、parseFloat()
~~~
<br/>
>[success] ### Number()方法
Number()可以用于任何數據類型
| 數據類型 | Number()轉換后 |
| --- | --- |
| Boolean | true 和 false 被轉換成 1 和 0 |
| Number | 只是簡單的傳入和返回 |
| null | 0 |
| undefined | NaN |
| string | 1. 如果字符串只包含數字,‘123’ 會被轉換成 123<br/>而‘011’會變成 11 <br/><br/>2. 浮點數 ‘0.1’ 也會被轉換為 0.1 ,‘01.1’ 轉換為 1.1 <br/><br/> 3. 十六進制也會轉換為數字‘0xf’轉換為 15 <br/><br/> 4. 空字符串轉換為0 <br/><br/> 5. 如果以上的都沒有轉換結果為NaN |
| Object | NaN |
舉例:
~~~
var num1 = Number('哈哈哈') // NaN
var num2 = Number('') // 0
var num3 = Number('0011') // 1
var num4 = Number(true) // 1
~~~
<br/>
>[success] ### parseInt()方法
parseInt()適用于 ' 整數 '
~~~
console.log(parseInt(' 123 ')) // 123 ,parseInt會忽略字符前后的空格
console.log(parseInt('')) // NaN
console.log(parseInt('0xA')) // 10(十六進制數)
console.log(parseInt('22.5')) // 22
console.log(parseInt('070')) // 56(八進制數) 這里書上說是56,但是打印結果卻是70
console.log(parseInt('70')) // 70(十進制數)
如果已知值是'十六進制格式的字符串'
parseInt('0xAF', 16) // 175
parseInt('AF', 16) // 175 16進制可以簡寫
parseInt('AF') // NaN
~~~
- Javascript基礎篇
- Array數組
- 數組插入值
- filter()
- forEach()
- push()
- pop()
- unshift()
- shift()
- valueOf()
- 面向對象思想
- Javascript 面向對象編程(一):封裝
- Javascript面向對象編程(二):構造函數的繼承
- Javascript面向對象編程(三):非構造函數的繼承
- 解構
- 數組的解構賦值
- 對象的解構賦值
- 函數參數解構
- 字符串的解構賦值
- 數值和布爾值的解構賦值
- 圓括號問題
- 字符串.
- split()
- charAt()
- charCodeAt()
- concat()
- indexOf()
- lastIndexOf()
- match()
- replace()
- includes()
- 初識遞歸
- 渲染ul-li樹形結構
- 異步函數解決方案
- 1. callback回調函數
- 2. ES6 - Promise
- JavaScript高級程序設計(書)
- 在html中使用JavaScript
- script標簽的位置
- 延遲腳本
- 異步腳本
- <noscript>元素
- 基本概念
- 嚴格模式
- 變量詳解
- 數據類型
- typeof操作符
- undefined類型
- Null類型
- Boolean類型
- Number類型
- 深入了解ES6(書)
- var 、let 、 const
- 字符串與正則表達式
- 字符串
- 正則表達式
- 函數
- 函數形參默認值
- 使用不具名參數
- 函數構造器的增強能力
- 擴展運算符
- name屬性
- 明確函數的多重用途
- 塊級函數
- 箭頭函數
- 尾調用優化
- 擴展的對象功能
- 對象類別
- 對象字面量語法的擴展
- ES6對象新增方法
- 重復的對象屬性
- 自有屬性的枚舉順序
- 更強大的原型
- 解構:更方便的數據訪問
- 為什么要用解構?
- 對象解構
- 數組解構
- 混合解構
- 參數解構
- Symbol與Symbol屬性
- 創建Symbol
- Symbol的使用方法
- Symbol全局私有屬性
- Symbol與類型強制轉換
- Symbol屬性檢索
- Symbol的一些構造方法
- Set集合與Map集合
- Set集合
- Weak Set集合(弱引用Set集合)
- Map集合
- JS標準內置對象
- Object 構造函數及屬性
- Object 構造方法
- Symbol 內建對象類的函數及屬性
- Set 構造函數及屬性
- Weak Set 構造函數及屬性
- JS雜項
- 類數組對象
- Class類的理解和使用