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 相关文章推荐
Js+XML 操作
Sep 20 Javascript
从新浪弄下来的全屏广告代码 与使用说明
Mar 15 Javascript
Jquery之美中不足小结
Feb 16 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
Apr 09 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
Jul 13 Javascript
JavaScript中读取和保存文件实例
May 08 Javascript
javascript宿主对象之window.navigator详解
Sep 07 Javascript
微信小程序 开发经验整理
Feb 15 Javascript
jQuery实现选项卡功能(两种方法)
Mar 08 Javascript
Router解决跨模块下的页面跳转示例
Jan 11 Javascript
在移动端使用vue-router和keep-alive的方法示例
Dec 02 Javascript
vue滑动吸顶及锚点定位的示例代码
May 10 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在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
Angular 4依赖注入学习教程之简介(一)
2017/06/04 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
vue获取验证码倒计时组件
2019/08/26 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
Python实现处理管道的方法
2015/06/04 Python
python实现决策树分类算法
2017/12/21 Python
python2 与python3的print区别小结
2018/01/16 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
用Python配平化学方程式的方法
2019/07/20 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
如何实现更换Jupyter Notebook内核Python版本
2020/05/18 Python
python批量修改交换机密码的示例
2020/09/22 Python
python实现马丁策略的实例详解
2021/01/15 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
物业管理专业个人的自我评价
2013/11/19 职场文书
材料加工工程求职信
2014/02/19 职场文书
《穷人》教学反思
2014/04/08 职场文书
物理学专业自荐信
2014/06/11 职场文书
公务员党员评议表自我鉴定
2014/09/14 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
2014幼儿园中班工作总结
2014/11/10 职场文书
Win11绿屏怎么办?Win11绿屏死机的解决方法
2021/11/21 数码科技