ES6第三部分(数值的扩展、函数的扩展)

本文介绍了ES6中数值表示的扩展,包括二进制、八进制、安全整数等概念,以及数学方法如Number.isFinite、Math.trunc、Math.cbrt等的更新。同时,探讨了对数方法、指数运算符、BigInt数据类型和函数的多项增强。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

12.数值的扩展
(1)二进制和八进制表示法
ES6提供了二进制和八进制数值的新的写法,分别用前缀Ob(或0B)和0o(或0O)表示。
如果要将0b和0o前缀的字符串数值转为十进制,要使用Number方法。

Number('0b111')  // 7
Number('0o10')  // 8

(2)Number.isFinite(),Number.isNaN()
Number.isFinite()用来检查一个数值是否为有限的(finite),即不是Infinity。如果参数类型不是数值,Number.isFinite一律返回false。
Number.isNaN()用来检查一个值是否为NaN。
(3)Number.parseInt(),Number.parseFloat()

// ES5的写法
parseInt('12.34') // 12
parseFloat('123.45#') // 123.45
// ES6的写法
Number.parseInt('12.34') // 12
Number.parseFloat('123.45#') // 123.45

(4)Number.isInteger()
用来判断一个数值是否为整数
(5)Number.EPSILON
是极小的常量,它表示1与大于1的最小浮点数之间的差。是javaScript能够表示的最小精度。误差如果小于这个值就认为没有意义了,即不存在误差
(6)安全整数和Number.isSafeInteger()
Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER这两个常量,用来表示这个范围的上下限。
Number.isSafeInteger()则是用来判断一个整数是否落在这个范围之内。
(7)Math对象的扩展
Math.trunc()
用于去除一个数的小数部分,返回整数部分。
Math.sign()
用来判断一个数到底是正数、负数还是0。对于非数值,会先将其转换为数值。
会返回五种值:
-参数为正数,返回+1;
-参数为负数,返回-1;
-参数为0,返回0;
-参数为-0,返回-0;
-其他值,返回NaN.
Math.cbrt()
用于计算一个数的立方根
Math.clz32()
将参数转为32位无符号正数的形式,然后返回这个32位值里面有多少个前导0.
Math.imul()
返回两个数以32位带符号整数形式相乘的结果,返回的也是一个32位带符号的整数。
Math.fround()
返回一个数的32位单精度浮点数形式。
Math.hypot()
返回所有参数的平方和的平方根。
(8)对数方法
Math.expm1(x)返回ex - 1,即Math.exp(x)-1
Math.log1p(x)方法返回1+x的自然对数,即Math.log(1+x).如果x小于-1,返回NaN。
Math…log10(x)返回以10为底的x的对数。如果x小于0,则返回NaN.
Math.log2(x)返回以2为底的x的对数。如果x小于0,返回NaN
(10)指数运算符**

2 ** 2 // 4
2 ** 3 // 8

(11)BigInt数据类型
用来表示整数,没有位数的限制,任何位数的整数都可以精确表示。为了与Number类型区别,BigInt类型的数据必须添加后缀n。
13.函数的扩展
(1)函数参数的默认值

function log(x, y = 'World') {
  console.log(x, y);}
log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello

(3)函数的length属性:等于函数的参数个数减去指定了默认值的参数个数。
(4)rest参数
Rest参数(形式为…变量名)
Rest参数之后不能再有其他参数(即只能是最后一个参数)
(5)严格模式
从ES5开始,函数内部可以设定为严格模式。
(6)箭头函数

var f = v => v;
// 等同于
var f = function (v) {
  return v;
};

箭头函数的一个用处是简化回调函数
箭头函数使用注意点:
-函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
-不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
-不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用rest参数代替。
-不可以使用yield命令,因此箭头函数不能用作Generator函数
箭头函数可以让this指向固定化,这种特性有利于封装回调函数。箭头函数里面根本拿没有自己的this,而是引用外层的this.
(7)尾调用优化
就是指某个函数的最后一步是调用另一个函数

function f(x){
  return g(x);}

函数f的最后一步是调用函数g,这就叫尾调用
(8)尾递归
函数尾调用自身,成为尾递归。
(9)Function.prototype.toString()
toString()方法返回函数代码本身

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值