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 查找新建元素代码
Jul 06 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
Mar 15 Javascript
js四舍五入数学函数round使用实例
May 09 Javascript
移动Web中图片自适应的两种JavaScript解决方法
Jun 18 Javascript
Jquery插件easyUi实现表单验证示例
Dec 15 Javascript
深入理解ECMAScript的几个关键语句
Jun 01 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
Jul 07 Javascript
AngularJS 应用模块化的使用
Apr 04 Javascript
微信小程序实现人脸检测功能
May 25 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
Aug 28 Javascript
基于JavaScript伪随机正态分布代码实例
Nov 07 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
Jan 26 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
apache+php+mysql安装配置方法小结
2010/08/01 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
2018/06/09 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
JavaScript中实现块作用域的方法
2010/04/01 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
使用js实现数据格式化
2014/12/03 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
分享19个JavaScript 有用的简写写法
2017/07/07 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
学习python 之编写简单乘法运算题
2016/02/27 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
selenium+python实现自动登录脚本
2018/04/22 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
Python高级编程之继承问题详解(super与mro)
2019/11/19 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
python软件都是免费的吗
2020/06/18 Python
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
美国汽车零部件和配件网站:CarParts
2019/03/13 全球购物
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
建筑施工员岗位职责
2013/11/26 职场文书
学历公证委托书
2014/04/09 职场文书
2014年变电站工作总结
2014/12/19 职场文书
给客户的感谢信
2015/01/21 职场文书
党委工作总结2015
2015/04/27 职场文书
《比尾巴》教学反思
2016/02/24 职场文书