基本数据类型之Number相关
Number类型
- 有效数字
- NaN(not a number)不是一个数,但他是number数据类型的
- NaN和谁都不相等,包括自己
其它数据类型转换为数字类型
Number(value)方法
-
把其它基本数据****类型转化为数字类型
-
- 把字符串类型转数字类型(string number)
-
-
- 只要字符串中出现了非有效数字,结果就是NaN(第一个小数点不算,第一个负号、加号不算)
- 如果被转化的数据类型左右有空格会自动去掉
- 空字符串转数字是0
-
-
- 把布尔转数字类型(boolean number)
-
-
- true转数字1
- false转数字0
-
-
- 把空对象指针转数字类型(null number)
-
-
- null转数字类型为0
-
-
- 把未定义类型转数字类型(undefined number)
-
-
- undefined转数字类型为NaN
-
-
把引用数据类型转化为数字类型(先把引用数据类型转化为字符串类型,再把字符串类型转化为数字类型)
-
- 普通对象转数字类型
-
-
- 所有的普通对象转字符串都是’[object Object]’
- 结果为NaN
-
-
- 数组转数字类型
-
-
- 数组左右两边的中括号去掉,替换为引号,然后把数组内的每一项分别做.toString()运算,数组内的逗号不能丢。
-
parseInt(val)和parseFloat(val)方法
-
把字符串转化为数字的方法
-
- 从左到右依次查找有效数字,一旦发现非有效数字,立即停止查找,把找到的数字返回出去,(parseInt不能识别小数点,parseFloat可以识别小数点)
-
-
- 如果从一开始就是非有效数字,那结果就是NaN
-
-
- 如果要转化的值不是字符串类型,先转换为字符串类型,再查找
-
-
- true、false、null、undefined、{}、NaN 转的都是NaN。
- [ ]先转换为字符串,在查找
-
<script>
// 1、parseInt和parseFloat
/* > 把字符串转换为数字
> 从左到右依次查找有效数字,一旦发现非有效数字,立即停止查找,把找到的数字返回出去(paeseInt不可以识别小数点,parseFloat可以识别小数点)
> 如果从一开始就是非有效数字,那结果就是NaN
> 如果你要转换的值不是字符串类型的,先转换为字符串类型,再查找
> true、false、null、undefined、{}、NaN 转都是NaN
> 数组是先转换为字符串,在进行查找 */
let num = '3.141.5926';
console.log(parseInt(num)) // 3
console.log(parseFloat(num)) // 3.141
let s = true;
console.log(parseInt(s)) // 'true' // NaN
console.log(parseInt([])) // '' NaN
console.log(parseFloat({})) // '[object Object]' NaN
// isNaN检测一个值是否是一个非有效数字,如果是就是true,反之就是false
// (这个值如果是有效数字,那结果就是false,反之就是true)
// 如果你要检测的值不是数字类型的,先转换为数字类型,在检测
console.log(isNaN(3)) //false
console.log(isNaN(NaN)) // true
console.log(isNaN(true)) // false
console.log(isNaN(false)) // false
console.log(isNaN(undefined)) // true
console.log( isNaN( Number( isNaN(NaN) ) ) ) // true=>1=>false
console.log( isNaN( Number( parseFloat( isNaN({}) ) ) ) )
//true=>NaN=>NaN=>true
</script>
通过四则运算转数字
isNaN(val)
-
检测一个值是否是非有效数字,如果是 就为true, 反之为 false
-
- NaN 为true
- 有效数字 为false
-
检测的值不是数字类型的,先转换为数字类型,再检测