es6数值的扩展方法


Posted in Javascript onMarch 11, 2019

Number的方法扩展

Number.isFinite() 方法检测有限的数值(有穷的数值)

console.log(Number.isFinite(1)) // true
  console.log(Number.isFinite(3.1415926)) // true
  console.log(Number.isFinite('1')) // false
  console.log(Number.isFinite(NaN)) // false
  console.log(Number.isFinite('1e')) // false
  console.log(isFinite('1')) // true
  console.log(isFinite('1e')) // false

上面前两个例子检测的都是数字,不管是浮点数还是正整数负数都是有穷的数值,而下面三个有两个则为字符串类型,这个方法是不会转换数字的所以为无穷的数值,当然NaN也是无穷的数值,咱们再看最后两个例子,是用的全局方法,字符串数字检测出来就是有穷的,而掺杂其他字符就是无穷的

Number.isNaN() 检测一个值是不是NaN

console.log(Number.isNaN(1)) // false
  console.log(Number.isNaN(3.1415926)) // false
  console.log(Number.isNaN('1')) // false
  console.log(Number.isNaN(NaN)) // true
  console.log(Number.isNaN('1e')) // false

上面的例子咱们可以了解一下,这个方法就是检测值的NaN

Number.parseInt() 隐士类型的转换

console.log(Number.parseInt(1)) // 1
  console.log(Number.parseInt(3.1415926)) // 3
  console.log(Number.parseInt(3.6415926)) // 3
  console.log(Number.parseInt('1es5')) //1
  console.log(Number.parseInt('asd123')) // NaN
  console.log(Number.parseInt(NaN)) // NaN

上面的例子转换是可以将浮点数转换为正整数,不会有什么四舍五入,如果字符串中数字为开头,则直接转换提取出数字如果不是的话则为NaN

Number.parseFloat() 类型的转换会保留浮点数

console.log(Number.parseFloat(1)) // 1
 console.log(Number.parseFloat(3.1415926)) // 3.1415926
 console.log(Number.parseFloat('1es5#')) // 1
 console.log(Number.parseFloat('#asd123')) //NaN
 console.log(Number.parseFloat(NaN)) // NaN

上面的写了几个简单的例子,parseFloat和parseInt的区别就是保留浮点数

Number.isInteger() 检测一个值是否为整数

console.log(Number.isInteger(1)) // true
console.log(Number.isInteger(3.1415926)) // false
console.log(Number.isInteger('123')) // false
console.log(typeof (Math.trunc('1.23'))) // number
console.log(Number.isInteger('1.23')) // false
console.log(Number.isInteger(null)) // false
console.log(Number.isInteger(3.0000000000000002)) // true
console.log(Number.parseFloat(Array)) // NaN

上面的例子如果为整数则为true否则为false,它不会将字符串类型进行隐士转换,如果它检测的值小于JavaScript能够分辨最小的值会出现误判,对于二进制的位数也是有现在要求的不然也会出现误判

Math对象的扩展

Math.trunc() 去除浮点数的小数部分,返回整数也就相当于转换把,但是没有四舍五入

console.log(Math.trunc(1.8)) // 1
  console.log(Math.trunc(3.1415926)) // 3
  console.log(Math.trunc('3.1415926')) // 3
  console.log(Math.trunc('1.23')) // 1
  console.log(Math.trunc('1.23#')) // NaN
  console.log(Math.trunc('#1.23')) // NaN
  console.log(Math.trunc()) // NaN
  console.log(Math.trunc(-0.25)) // -0

上面举例了几个新增的Math对象的方法,我们可以看出,它是可以字符串数字转化出来数字,我们通过对它的类型检测也是得到了number类型,如果数字字符中包含其它字符或是空则表示为NaN

Math.sign() 用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值

console.log(Math.sign(1.8))
      console.log(Math.sign(3.1415926))
      console.log(Math.sign('3.1415926'))
      console.log(Math.sign('1.23#'))
      console.log(Math.sign('#1.23'))
      console.log(Math.sign(-0))
      console.log(Math.sign(-2))

上面的例子你可能会疑惑,为什么检测整数和负数的时候都为1 || -1,是因为正数除了0之外都是1,负数除了-0都是-1表示,它也会先执行number的转换字符串数字,如果带有其它符号无法转换的则为NaN

Math.cbrt() 计算立方根

es6数值的扩展方法

console.log(Math.cbrt(4)) // 1.5874010519681996
console.log(Math.cbrt('4')) // 1.5874010519681996
console.log(Math.cbrt('2q')) // NaN
console.log(Math.cbrt('q2')) // NaN
console.log(Math.cbrt('16')) // 2.5198420997897464

上面几个例子也体现除了math新增的方法,它也是先进行number的转换,然后再就进行计算,如果不是纯数字的字符串类型会转换失败得出NaN

Math.hypot() 返回参数内平方的和,可以任意多个参数

console.log(Math.hypot(4, 4)) // 5.656854249492381
console.log(Math.hypot('4', 4, 3)) // 6.4031242374328485
console.log(Math.hypot('2q', 4)) // NaN
console.log(Math.hypot('q2', 4)) // NaN
console.log(Math.hypot('16', 4)) // 16.492422502470642

上面的方法也会先进行数值的转换,有一个参数无法转换就会返回NaN

对数方法

Math.log1p() 返回1+参数的自然数,如果小于-1就返回NaN

console.log(Math.log1p(1)) // 0.6931471805599453    也相当于0
  console.log(Math.log1p(-1)) //-Infinity
  console.log(Math.log1p(-2)) // NaN
  console.log(Math.log1p('-1')) // -Infinity
  console.log(Math.log1p('-2q')) // NaN

Math.log10() 返回以10为底x的对数,小于0返回NaN

console.log(Math.log10(10)) // 1
console.log(Math.log10(5)) // 0.6989700043360189
console.log(Math.log10(20)) // 1.3010299956639813
console.log(Math.log10(2000)) // 3.3010299956639813

Math.log2() 返回以2为底x的对数,小于0返回NaN

console.log(Math.log10(10)) // 3.321928094887362
console.log(Math.log10(5)) // 2.321928094887362
console.log(Math.log10(20)) // 4.321928094887363
console.log(Math.log10(2000)) // 10.965784284662087
console.log(Math.log2('2000')) // 10.965784284662087

上面的这个方法也是先进行数值的转换,在进行计算

总结:基本上数值的扩展都是针对数字类型的一些新方法的使用,一般的是存在比较复杂的公式,所以我们可以按照方法得出的结果可以去查找规律从而可以使用它,可以多了解了解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
添加到收藏夹代码(兼容几乎所有的浏览器)
Jan 09 Javascript
showModalDialog 和 showModelessDialog
Jan 22 Javascript
javascript中加号(+)操作符的一些神奇作用
Jun 06 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
Feb 06 Javascript
Bootstrap选项卡动态切换效果
Nov 28 Javascript
JavaScript微信定位功能实现方法
Nov 29 Javascript
AngularJS自定义指令实现面包屑功能完整实例
May 17 Javascript
浅谈vue父子组件怎么传值
Jul 21 Javascript
跨域解决之JSONP和CORS的详细介绍
Nov 21 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
Mar 29 Javascript
js实现无缝轮播图效果
Mar 09 Javascript
基于js实现逐步显示文字输出代码实例
Apr 02 Javascript
Vue实现一个图片懒加载插件
Mar 11 #Javascript
使用Jenkins部署React项目的方法步骤
Mar 11 #Javascript
vue基础之v-bind属性、class和style用法分析
Mar 11 #Javascript
配置eslint规范项目代码风格
Mar 11 #Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
Mar 11 #Javascript
vue基础之事件v-onclick="函数"用法示例
Mar 11 #Javascript
每天学点Vue源码之vm.$mount挂载函数
Mar 11 #Javascript
You might like
PHP调用Webservice实例代码
2011/07/29 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
javascript window.confirm确认 取消对话框实现代码小结
2012/10/21 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
深入理解react 组件类型及使用场景
2019/03/07 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
python 实现上传图片并预览的3种方法(推荐)
2017/07/14 Python
python ddt实现数据驱动
2018/03/14 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
We Fashion荷兰:一家国际时装公司
2018/04/18 全球购物
网站创业计划书
2014/04/30 职场文书
售后服务承诺书怎么写
2014/05/21 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
2014年行政工作总结
2014/11/19 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
小学一年级班主任工作经验交流材料
2015/11/02 职场文书