ES6中Math对象新增的方法实例详解


Posted in Javascript onApril 25, 2017

本文实例讲述了ES6中Math对象新增的方法。分享给大家供大家参考,具体如下:

Math.trunc()

Math.trunc方法用于去除一个数的小数部分,返回整数部分。

对于没有部署这个方法的环境,可以用下面的代码模拟。

Math.trunc = Math.trunc || function(x) {
 return x < 0 ? Math.ceil(x) : Math.floor(x);
};

Math.sign()

Math.sign方法用来判断一个数到底是正数、负数、还是零。

对于没有部署这个方法的环境,可以用下面的代码模拟。

Math.sign = Math.sign || function(x) {
 x = +x; // convert to a number
 if (x === 0 || isNaN(x)) {
  return x;
 }
 return x > 0 ? 1 : -1;
};

Math.cbrt()

Math.cbrt方法用于计算一个数的立方根。

对于没有部署这个方法的环境,可以用下面的代码模拟。

Math.cbrt = Math.cbrt || function(x) {
 var y = Math.pow(Math.abs(x), 1/3);
 return x < 0 ? -y : y;
};

Math.clz32()

JavaScript的整数使用32位二进制形式表示,Math.clz32方法返回一个数的32位无符号整数形式有多少个前导0。

Math.imul()

Math.imul方法返回两个数以32位带符号整数形式相乘的结果,返回的也是一个32位的带符号整数。

Math.fround()

Math.fround方法返回一个数的单精度浮点数形式。

对于没有部署这个方法的环境,可以用下面的代码模拟。

Math.fround = Math.fround || function(x) {
 return new Float32Array([x])[0];
};

Math.hypot()

Math.hypot方法返回所有参数的平方和的平方根

对数方法

ES6新增了4个对数相关方法。

(1) Math.expm1()

Math.expm1(x)返回ex - 1,即Math.exp(x) - 1。

对于没有部署这个方法的环境,可以用下面的代码模拟。

Math.expm1 = Math.expm1 || function(x) {
 return Math.exp(x) - 1;
};

(2)Math.log1p()

Math.log1p(x)方法返回1 + x的自然对数,即Math.log(1 + x)。如果x小于-1,返回NaN。

对于没有部署这个方法的环境,可以用下面的代码模拟。

Math.log1p = Math.log1p || function(x) {
 return Math.log(1 + x);
};

(3)Math.log10()

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

对于没有部署这个方法的环境,可以用下面的代码模拟。

Math.log10 = Math.log10 || function(x) {
 return Math.log(x) / Math.LN10;
};

(4)Math.log2()

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

对于没有部署这个方法的环境,可以用下面的代码模拟。

Math.log2 = Math.log2 || function(x) {
 return Math.log(x) / Math.LN2;
};

三角函数方法

ES6新增了6个三角函数方法。

Math.sinh(x) 返回x的双曲正弦(hyperbolic sine)
Math.cosh(x) 返回x的双曲余弦(hyperbolic cosine)
Math.tanh(x) 返回x的双曲正切(hyperbolic tangent)
Math.asinh(x) 返回x的反双曲正弦(inverse hyperbolic sine)
Math.acosh(x) 返回x的反双曲余弦(inverse hyperbolic cosine)
Math.atanh(x) 返回x的反双曲正切(inverse hyperbolic tangent)

Math.signbit()

Math.sign()用来判断一个值的正负,但是如果参数是-0,它会返回-0。

ES2016 新增了一个指数运算符(**)

指数运算符可以与等号结合,形成一个新的赋值运算符(**=)。

let a = 2;
a **= 2;
// 等同于 a = a * a;
let b = 3;
b **= 3;
// 等同于 b = b * b * b;

注:在vp8引擎中与Math.pow()结果有些不同。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
限制复选框的最大可选数
Jul 01 Javascript
基于jquery的无缝循环新闻列表插件
Mar 07 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
Mar 08 Javascript
js智能获取浏览器版本UA信息的方法
Aug 08 Javascript
bootstrap下拉菜单使用方法解析
Jan 13 Javascript
js中字符型和数值型数字的互相转化方法(必看)
Apr 25 Javascript
深入理解Vue Computed计算属性原理
May 29 Javascript
Vue formData实现图片上传
Aug 20 Javascript
通过layer实现可输入的模态框的例子
Sep 27 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
Mar 04 Javascript
Element图表初始大小及窗口自适应实现
Jul 10 Javascript
JavaScript实现随机点名小程序
Oct 29 Javascript
jquery.form.js异步提交表单详解
Apr 25 #jQuery
关于jQuery中fade(),show()起始位置的一点小发现
Apr 25 #jQuery
深入理解Javascript中的作用域链和闭包
Apr 25 #Javascript
js中字符型和数值型数字的互相转化方法(必看)
Apr 25 #Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
Apr 25 #Javascript
JS字符串按逗号和回车分隔的方法
Apr 25 #Javascript
使用Math.max,Math.min获取数组中的最值实例
Apr 25 #Javascript
You might like
从Web查询数据库之PHP与MySQL篇
2009/09/25 PHP
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
node.js 和HTML5开发本地桌面应用程序
2016/12/13 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
使用grappelli为django admin后台添加模板
2014/11/18 Python
Python生成随机验证码的两种方法
2015/12/22 Python
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
用Python批量把文件复制到另一个文件夹的实现方法
2019/08/16 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
什么是Linux虚拟文件系统VFS
2015/08/25 面试题
法律专业应届本科毕业生求职信
2013/10/25 职场文书
党员党性分析材料
2014/02/17 职场文书
中学生运动会口号
2014/06/07 职场文书
拉歌口号大全
2014/06/13 职场文书
2015年个人现实表现材料
2014/12/10 职场文书
写给医院的感谢信
2015/01/22 职场文书
教你怎么用Python实现多路径迷宫
2021/04/29 Python
python munch库的使用解析
2021/05/25 Python
Golang 语言控制并发 Goroutine的方法
2021/06/30 Golang
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL