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 相关文章推荐
PHP结合jQuery实现的评论顶、踩功能
Jul 22 Javascript
JS碰撞运动实现方法详解
Dec 15 Javascript
微信小程序 css使用技巧总结
Jan 09 Javascript
详解Vue监听数据变化原理
Mar 08 Javascript
javascript内存分配原理实例分析
Apr 10 Javascript
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 jQuery
JS判断一个数是否是水仙花数
Jun 11 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
Jun 28 Javascript
浅谈Node.js之异步流控制
Oct 25 Javascript
浅谈使用React.setState需要注意的三点
Dec 18 Javascript
vue.js轮播图组件使用方法详解
Jul 03 Javascript
JS数组splice操作实例分析
Oct 12 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
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
php短址转换实现方法
2015/02/25 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
YII2框架中添加自定义模块的方法实例分析
2020/03/18 PHP
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
JS中with的替代方法与String中的正则方法详解
2016/12/23 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
在Vuex中Mutations修改状态操作
2020/07/24 Javascript
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
详解Python中的from..import绝对导入语句
2016/06/21 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
Python内置加密模块用法解析
2019/11/25 Python
Python接口开发实现步骤详解
2020/04/26 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
Python函数参数分类原理详解
2020/05/28 Python
HTML5中的websocket实现直播功能
2018/05/21 HTML / CSS
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
交通事故检查书范文
2014/01/30 职场文书
洗发水广告词
2014/03/13 职场文书
大学生村官承诺书
2014/03/28 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
教师学习心得体会范文
2016/01/21 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
python解析照片拍摄时间进行图片整理
2022/07/23 Python