ES6入门系列二(数值的扩展)
ES6 在 Number对象上新增了很多方法
1 . Number.isFinite()判断是否为有限的数字
和全局的isFinite() 方法的区别是
isFinite('1') === true ; Number.isFinite('1') === false
全局的isFinite()先调用Number() 方法 把 变量 转化为数字再进行判断, 所以返回 true,
Number.isFinite()只能判断数字, 对于非数字一律返回false
2 , Number.isNaN() 判断是否为NAN,
只有NaN 才返回true, 否则返回false
3 , ES6 把全局的parseInt()和parseFloat() 移植到了Number对象上,但行为保持不变,
是为了逐步减少全局方法, 使语言逐渐模块化
4 , Number.isInterger()判断是否为整数, 注意一点,javascript内部整数和浮点数是同样的存储方法
所以Number.isInteger(2) === Number.isInteger(2.0)
5, Number.EPSILON是一个极小常量, 一般来说, 差值小于这个极小常量的两个数我们就认为是相等的
因为JavaScript浮点数的计算不精确,0.1+ 0.2 = 0.30000000000000004
如果 Math.abs(0.1+ 0.2 - 0.3) < Number.EPSILON 我们就认为 0.1+ 0.2 = 0.3
6 , Number.isSafeInteger()
我们知道JavaScript表示整数的精度范围在-2的53次方到2的53次方之间,
超过这个范围的整数JavaScript就无法精确表示了,比如
Math.pow(2, 53) + 1 === Math.pow(2 ,53) / true
ES6引入了两个数来表示这个范围
Number.MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
Number.MIN_SAFE_INTEGER = Math.pow(2, 53) + 1;
判断一个整数是否落在这个区域就可以用 Number.isSafeInteger() ,
它只能传整数进去, 不是整数一律返回false
7 , 基于6 我们知道JavaScript无法准确的表示大于2的53次方的整数,
由此ES6新增了一个bigint的数据类型, 数值后面加n 来区分数字
typeof 1234n === 'bigint'
当计算Math.pow(2, 53) + 1 的时候
9007199254740992 + 1 = 9007199254740992 (不精确)
9007199254740992n + 1n = 9007199254740993n (精确)
在调用toString() 方法返回结果
最新文章
- js 判断IE浏览器,包含IE6/7/8/9
- spring.net xml 命名空间
- DATEADD和DATEDIFF函数、其他日期处理方法 、已打开的端口、FORMAT函数
- hdu1115(计算多边形几何重心)
- Hibernate——property的access属性
- Linux 配置多IP
- linux下登录出现-bash-3.2#解决办法
- Angular之filter学习
- jquery-easyui实现页面布局和增删改查操作(SSH2框架支持)转载
- Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
- HDU 2040 亲和数
- Linux cat /proc/meminfo 输出分析
- Django中多表查询思路
- Vs 中关于项目中的某 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”
- python之tips(三)--为什么Python有相同的不可变对象id不同?
- Educational Codeforces Round 55 (Rated for Div. 2) A - Vasya and Book
- jar命令打jar包
- python - class类 (二) 静态属性/类方法/静态方法
- expect脚本同步文件 expect脚本指定host和要同步的文件 构建文件分发系统 批量远程执行命令
- SpringBoot集成ActiveMQ