今天开始,连续五天,每天把JS各数据类型值讲一种
Number数字类型
Number数字类型包含:正数 / 负数 / 小数 / 零
Infinity 代指无穷大的值 例 var num=Infinity;
-Infinity 代指无穷小的值
NaN(not a number)不是一个有效数字,但它确属于number类型
-
var num = 10- ‘A’; NaN
-
NaN==NaN; false
NaN和NaN本身是不相等(它和任何都不相等)(可以理解为:“你不是人”那就不一定是什么了,范围太广,无法相等)
需求:验证一个值是否为有效数字?
isNaN("[value]"):检测一个值[value]是否为“非有效数字”,如果是“非有效数字”,返回true,反之返回false
如果[value]不是数字类型的值,需要把[value]值变为数字类型的值,再检测它是不是有效数字,过程当中,浏览器默认会把[value]转换为数字类型 “隐式转换(浏览器默认转换的)”
在“隐式转换”当中,浏览器是基于Number([value])实现数据类型转换的
Number([value])把其他数据类型转换为number数字类型
-
字符串转换为数字:空字符串是0 如果字符串中出现任意一个非有效数字时,输出都是NaN!
-
- null转换为数字:null->0
-
- undefined转换为数字:undefined->NaN
-
布尔转换为数字(布尔只有true和false):true->1 false->0
-
symbol不能转换为数字Number(Symbol()),报错(Uncaught TypeError: Cannot convert a Symbol value to a number).
-
bigint 可以转换为数字
-
引用数据类型(对象或者函数)转换为数字:
-
- 首先获取它的[Symbol.toPrimitive]属性值
-
- 如果没有[Symbol.toPrimitive]属性值,其次获取它的valueOf 值(原始值)
-
- 如果valueof得到的也不是原始值,最后把其转换为字符串 .toString(),然后再转换为数字 Number()
parseInt/parseFloat([value])把其他数据类型转换为数字类型
需要保证[value]是字符串
从字符串左侧第一个字符开始向右查找,把找到的有效数字字符,最后转换为数字(遇到一个非有效数字则停止查找,不论后面是否还有有效数字字符,都不再找了)
-
parseInt(“10px1314”)=>12
-
parseFloat(“10px1314”)=>12
-
parseInt(“10.5px”)=>12
-
parseFloat(“10.5px”)=>12.5
-
parseInt("")=>NaN
-
parseFloat("")=>NaN
-
Number("")=>0
如果一个有效数字字符都没有找到,结果是NaN
parseInt(“px12”)=>NaN
parseFloat(“px121314”)=>NaN
[number value].toFixed([N]):保留小数点后面N位
var n=3.141592653
- n.toFixed(2)=>3.14
- n.toFixed(3)=>3.142 四舍五入
[number value].toExponential
[number value].toPrecision
明天开始讲字符串数据类型