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 相关文章推荐
javascript Prototype 对象扩展
May 15 Javascript
不同Jquery版本引发的问题解决
Oct 14 Javascript
JavaScript中的undefined学习总结
Nov 30 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
Jun 19 Javascript
解决jQuery使用JSONP时产生的错误
Dec 02 Javascript
H5移动端适配 Flexible方案
Oct 24 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
Aug 27 Javascript
原生js实现水平方向无缝滚动
Jan 10 Javascript
jquery实现提示语淡入效果
May 05 jQuery
微信小程序选择图片和放大预览图片功能
Nov 02 Javascript
详解React 在服务端渲染的实现
Nov 16 Javascript
vue-cli监听组件加载完成的方法
Sep 07 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
短波的认识
2021/03/01 无线电
PHP与Java对比学习日期时间函数
2016/07/03 PHP
IE图片缓存document.execCommand(&quot;BackgroundImageCache&quot;,false,true)
2011/03/01 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
使用console进行性能测试
2015/04/27 Javascript
基于JavaScript实现回到页面顶部动画代码
2016/05/24 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
[43:47]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第一场 12.09
2020/12/11 DOTA
python实现目录树生成示例
2014/03/28 Python
python判断字符串是否纯数字的方法
2014/11/19 Python
matplotlib绘制动画代码示例
2018/01/02 Python
人工神经网络算法知识点总结
2019/06/11 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
德国足球商店:OUTFITTER
2019/05/06 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
什么是唯一索引
2015/07/05 面试题
学生会干部自荐信
2014/02/04 职场文书
八月一日观后感
2015/06/10 职场文书
实践论读书笔记
2015/06/29 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书