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 相关文章推荐
jQuery实现的Div窗口震动特效
Jun 09 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
Jan 26 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
Apr 20 Javascript
各种选择框jQuery的选中方法(实例讲解)
Jun 27 jQuery
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
May 28 Javascript
Node.js笔记之process模块解读
May 31 Javascript
如何把vuejs打包出来的文件整合到springboot里
Jul 26 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
Aug 12 Javascript
一次让你了解全部JavaScript的作用域
Jun 24 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
Nov 15 Javascript
vue项目中极验验证的使用代码示例
Dec 03 Javascript
vue实现动态表格提交参数动态生成控件的操作
Nov 09 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并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
PHP实现八皇后算法
2019/05/06 PHP
解放web程序员的输入验证
2006/10/06 Javascript
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
让你5分钟掌握9个JavaScript小技巧
2018/06/09 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
实用自动化运维Python脚本分享
2018/06/04 Python
widows下安装pycurl并利用pycurl请求https地址的方法
2018/10/15 Python
python对html过滤处理的方法
2018/10/21 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
更新修改后的Python模块方法
2019/03/03 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
2020/07/14 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
Why we need EJB
2016/10/20 面试题
服务之星获奖感言
2014/01/21 职场文书
服装创业计划书范文
2014/02/05 职场文书
《商鞅南门立木》教学反思
2014/02/16 职场文书
求职教师自荐书
2014/06/19 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
python实现简单的名片管理系统
2021/04/26 Python
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server