es6基础系列二:Number
es6中关于Number类型的变化,主要有以下几点
- Number.isInteger(新增,判断是否为整数)
- Number.EPSILON(新增,判断是否可忽略的误差)
- Number.MAX_SAFE_INTEGER(新增,可以在js中安全且精确地表示的最大整数)
- Number.MIN_SAFE_INTEGER(新增,可以在js中安全且精确地表示的最小整数)
- Number.isSafeInteger(新增,表示在js中安全整数范围内,即是在-(253 - 1) 到 (253 - 1)之间)
- Number.isNaN(全局方法isNaN移植到Number下)
- Number.isFinite(全局方法isFinite移植到Number下,检测一个数是否有限数,可以不在js安全整数范围)
- Number.parseInt(全局方法parseInt移植到Number下)
- Number.parseFloat(全局方法parseFloat移植到Number下)
Number.isInteger
新增方法,判断是否为整数
Number.isInteger(Infinity) // false
Number.isInteger(-Infinity) // false
Number.isInteger(NaN) // false
Number.isInteger(null) // false
Number.isInteger(0) // true
Number.isInteger(-10) // true
Number.isInteger(10.3) // false
Number.EPSILON
新增方法,判断是否可以忽略的误差
0.1 + 0.2 // 0.30000000000000004
0.1 + 0.2 === 0.3 // false
// 这其中的误差可以忽略,可以通过下面的函数来判断误差是否可以忽略
function withinErrorMargin (left, right) {
return Math.abs(left - right) < Number.EPSILON
}
withinErrorMargin(0.1 + 0.2, 0.3) // true
withinErrorMargin(0.2 + 0.2, 0.3) // false
Number.MAX_SAFE_INTEGER
新增方法,表示js可以安全和精确表示的最大整数,也就是[IEEE-754](https://en.wikipedia.org/wiki/IEEE_floating_point)定义的(253 - 1)
Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1 // true
Number.MAX_SAFE_INTEGER === 9007199254740991 // true
Number.MIN_SAFE_INTEGER
新增方法,表示js可以安全和精确表示的最小整数,也就是[IEEE-754](https://en.wikipedia.org/wiki/IEEE_floating_point)定义的-(253 - 1)
Number.MIN_SAFE_INTEGER === -Number.MAX_SAFE_INTEGER // true
Number.MIN_SAFE_INTEGER === -9007199254740991 // true
Number.isSafeInteger
新增方法,返回true或false,表示在js可以安全和精确表示的范围内,也就是[IEEE-754](https://en.wikipedia.org/wiki/IEEE_floating_point)定义的-(253 - 1)到(253 - 1),所谓安全就是如果超出这范围,计算的结果就很可能不正确。
Number.isSafeInteger('a') // false
Number.isSafeInteger(null) // false
Number.isSafeInteger(NaN) // false
Number.isSafeInteger(Infinity) // false
Number.isSafeInteger(-Infinity) // false
Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1) // false
Number.isSafeInteger(Number.MIN_SAFE_INTEGER) // true
Number.isSafeInteger(1) // true
Number.isSafeInteger(1.2) // false
Number.isSafeInteger(Number.MAX_SAFE_INTEGER) // true
Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1) // false
9007199254740993 - 9007199254740995 // -4 但真实结果应该为-2
Number.isNaN
类似es5的isNaN,判断是否NaN,返回true或false,但值为非数字时,跟es5的isNaN有区别,isNaN会先执行一次Number方法
Number.isNaN(123) // false, integers are not NaN
Number.isNaN(Infinity) // false, Infinity is not NaN
Number.isNaN(NaN) // true, NaN is NaN
Number.isNaN('pony'/'foo') // true, 'pony'/'foo' is NaN, NaN is NaN
Number.isNaN('ponyfoo') // false, 'ponyfoo' is not NaN
isNaN('ponyfoo') // true, because Number('ponyfoo') is NaN
Number.isFinite
类似es5的isFinite,判断是否有限数,返回true或false,但值为非数字时,跟es5的isNaN有区别,isFinite会先执行一次Number方法
Number.isFinite(NaN) // false
Number.isFinite(Infinity) // false
Number.isFinite(-Infinity) // false
Number.isFinite(null) // false
Number.isFinite(0) // true
Number.isFinite(3) // true
Number.isFinite('10') // false
Number.isFinite(Math.pow(2,53)+5) // true 大于js的安全整数
isFinite(null) // true, because Number(null) is 0
isFinite('10') // true, because Number('10') is 10
Number.parseInt
跟es5的parseInt完全一样,不再介绍
Number.parseInt === parseInt // true
Number.parseFloat
跟es5的parseFloat完全一样,不再介绍
Number.parseFloat === parseFloat // true
es6基础系列二:Number的更多相关文章
- 【C++自我精讲】基础系列二 const
[C++自我精讲]基础系列二 const 0 前言 分三部分:const用法.const和#define比较.const作用. 1 const用法 const常量:const可以用来定义常量,不可改变 ...
- 从零开始学 Web 之 ES6(四)ES6基础语法二
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- Java基础系列二:Java泛型
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 一.泛型概述 1.定 ...
- ES6基础(二)
一.ES6字符串扩展 字符串模板 在传统的JavaScript语言中,输出模板通常是这样写的. 上面这种写法繁琐不方便,于是ES6中引入了字符串模板解决这个问题. 用反引号(`)标识.他可以当做普通字 ...
- 你所不知道的ASP.NET Core MVC/WebApi基础系列 (二)
转自博客:https://www.cnblogs.com/CreateMyself/p/10604293.html 前言 本节内容,我们来讲讲.NET Core当中的模型绑定系统.模型绑定原理.自定义 ...
- ES6入门系列二(数值的扩展)
ES6 在 Number对象上新增了很多方法 1 . Number.isFinite()判断是否为有限的数字 和全局的isFinite() 方法的区别是 isFinite('1') === tr ...
- es6基础系列五--数组的拓展
Array.from() 用于将两类对象转为真正的数组,类似数组对象和可遍历对象(包括数据结构Set和Map)转化为数组 格式:Array.from(arrayLike[, mapFn[, thisA ...
- es6基础系列四--字符串的拓展
1 for...of 字符串的遍历接口 for(let i of "abc"){ console.log(i); } // a // b // c 2 includes 是否包含某 ...
- es6基础系列三:解构赋值
解构就是ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值(只能用于数组,对象或迭代器).如果解构不成功,则等于undefined,但不能赋值为undefined和null,因为undefi ...
随机推荐
- 架构师之路——里氏替换原则LSP
定义: 如果对每一个对类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型. 内容: 里氏替换原则通 ...
- 规范 : Sql statusEnum
statusEnum 的诞生是为了在看Sql 表时,可以知道他是一个有特别的string的分类,在扩张或修改时,可以方便追踪到c#, e.g. 如果是“称呼”(column title),在sql没有 ...
- Protobuf学习 - 入门
古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 -- 苏轼·<晁错论> 从公司的项目源码中看到了这个东西,觉得挺好用的,写篇博客做下小总结.下面的操作以C++为编程语言,protoc的版 ...
- Unbutu14.04 切换ROOT用户后无法启用音频
系统环境: Ubuntu14.04 x64 问题描述: 今天安装了Ubuntu14.04的64位系统,启用root用户登录后,观看视频时出现没有声音的现象. 问题原因: Ubuntu安装后默认root ...
- SQL Server-聚焦NOLOCK、UPDLOCK、HOLDLOCK、READPAST你弄懂多少?(三十四)
前言 时间流逝比较快,博主也在快马加鞭学习SQL Server,下班回来再晚也不忘记更新下博客,时间挤挤总会有的,现在的努力求的是未来所谓的安稳,每学一门为的是深度而不是广度,求的是知识自成体系而不是 ...
- [ZooKeeper.net] 1 模仿dubbo实现一个简要的http服务的注册 基于webapi
今天来试着模仿下dubbo实现一个简要的http服务的注册,虽说是模仿不过是很廉价的那种,只是模仿了一点点点...... 先放上demo目录结构: 开头还是把ZooKeeper的一些简要介绍搬过来看看 ...
- hdoj 1257 DP||贪心
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- JavaWeb之Ajax
一.什么是Ajax 1.1.Ajax的定义 Ajax:(Asynchronous JavaScript And XML)指异步 JavaScript 及 XML 不是一种新的编程语言,而是一种用于创建 ...
- JS中的普通函数和箭头函数
最近被问到了一个问题: >javaScript 中的箭头函数 (=>) 和普通函数 (function) 有什么区别? 我当时想的就是:这个问题很简单啊~(flag),然后做出了错误的回答 ...
- 10大支持移动“触摸操作”的JavaScript框架
摘要:移动开发行业的发展速度让人目不暇接,也在此大势之下,推出移动网站App成为开发者必经之路,如何让触屏设备 更易使用?如何让网站对触摸手势做出反应并使触摸更友好?所有这一切,皆因JavaScrip ...