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 相关文章推荐
基于jquery的一个浮动框(扩展性比较好 )
Aug 27 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
Jan 28 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
Mar 04 Javascript
IE10中flexigrid无法显示数据的解决方法
Jul 26 Javascript
javascript学习总结之js使用技巧
Sep 02 Javascript
基于jQuery实现的美观星级评论打分组件代码
Oct 30 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
Dec 08 Javascript
利用JS轻松实现获取表单数据
Dec 06 Javascript
Node.js的Koa实现JWT用户认证方法
May 05 Javascript
简单了解常用的JavaScript 库
Jul 16 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
Jul 20 Javascript
vue实现验证用户名是否可用
Jan 20 Vue.js
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
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
PHP基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
jQuery如何防止这种冒泡事件发生
2015/02/27 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
Javascript操作dom对象之select全面解析
2017/04/24 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
Python函数参数类型*、**的区别
2015/04/11 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
Python实现识别手写数字大纲
2018/01/29 Python
Python从零开始创建区块链
2018/03/06 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
给老师的道歉信
2014/01/11 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python
浅谈Node的内存泄露问题
2022/05/06 NodeJs