數字類型包含:常規數字、NaN
1、NaN
NaN:not a number(不是一個數,但是它屬於數字類型)
NaN和任何值(包含自己)都不相等,NaN != NaN, 所以我們不能用相等的方式判斷是否為有效數字
2、isNaN
isNaN:檢測一個值是否為非有效數字,如果不是有效數字返回true,反之為有效數字返回false
isNaN(10) // false
isNaN('aa') // true
isNaN('10') // false
在使用isNaN進行檢測的時候,首先會驗證檢測的值時候為數字類型,如果不是,先基於Number()這個方法,把值轉換成數字類型,然后再檢測
3、Number把其他類型值轉換為數字類型
(1)通過Number把字符串轉為數字,只要字符串中包含任意一個非有效數字字符(第一個點除外)結果都是NaN;空字符串會轉化為數字零
Number("12.5") // 12.5
Number("12.5px") // NaN
Number("12.5.5") // NaN
Number("") // 0
(2)把布爾值轉為數字
Number(true) // 1
Number(false) // 0
(3)把null和undefined轉為數字
Number(null) // 0
Number(undefined) //NaN
(4)把引用類型數據轉換為數字,是先把他基於toString方法轉換為字符串,然后再轉換為數字
Number({name: '10'}) // NaN
{name: "10"}.toString() // "[object Object]"
Number([ ]) // 0
Number([12, 23]) // NaN
[ ].toString() // ""
[12, 23].toString() // "12,23"
4、parseInt和parseFloat把字符串轉成數字
也是轉換為數字的方法,如果參數不是字符串,會先轉成字符串,對於字符串來說,它是從左到右依次查找有效數字字符,直到遇到非有效數字字符,停止查找,把找到的當做數字返回
parseInt("12.5px") // 12
parseFloat("12.5px") // 12.5
parseFloat(true) // NaN