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 相关文章推荐
Extjs4 类的定义和扩展实例
Jun 28 Javascript
gridview生成时如何去掉style属性中的border-collapse
Sep 30 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
Nov 28 Javascript
JavaScript基础知识之方法汇总结
Jan 24 Javascript
javascript动画之模拟拖拽效果篇
Sep 26 Javascript
JS FormData上传文件的设置方法
Jul 05 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
Aug 19 Javascript
seajs实现强制刷新本地缓存的方法分析
Oct 16 Javascript
ajax请求+vue.js渲染+页面加载的示例
Feb 11 Javascript
React props和state属性的具体使用方法
Apr 12 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
Aug 13 Javascript
vue v-for 使用问题整理小结
Aug 04 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语言流程控制中的主动与被动
2012/11/05 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
PHP数组实例详解
2016/06/26 PHP
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
简单谈谈require模块化jquery和angular的问题
2017/06/23 jQuery
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
JavaScript中引用vs复制示例详析
2018/12/06 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
python采集博客中上传的QQ截图文件
2014/07/18 Python
Python中的字符串查找操作方法总结
2016/06/27 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
Python3 jupyter notebook 服务器搭建过程
2018/11/30 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
详解PyTorch手写数字识别(MNIST数据集)
2019/08/16 Python
python中可以声明变量类型吗
2020/06/18 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
优秀求职信范文分享
2013/12/19 职场文书
工伤赔偿协议书
2014/04/15 职场文书
大学毕业生个人自荐书
2014/07/02 职场文书
先进员工获奖感言
2014/08/14 职场文书
小学生毕业评语
2014/12/26 职场文书
毕业生政审意见范文
2015/06/04 职场文书
疾病证明书
2015/06/19 职场文书
python数字图像处理实现图像的形变与缩放
2022/06/28 Python