【ES6】学习笔记:数值的扩展

博文类型: 学习向
背景: 学习ES6语法并做学习笔记
目标: 跟着ES6教程实操,并记录实操结果


一、Number

1.isFinite


作用:
检查一个数值是否为有限的。

//ES6的调用方式
console.log(Number.isFinite(123.2));//true
console.log(Number.isFinite("123.2"));//false
console.log(Number.isFinite(NaN));//false
console.log(Number.isFinite(Infinity));//false
console.log(Number.isFinite(true));//false
//ES5的调用方式
console.log(isFinite(123.2));//true
console.log(isFinite("123.2"));//true
console.log(isFinite(NaN));//false
console.log(isFinite(Infinity));//false
console.log(isFinite(true));//true

解释:
ES6的Number.isFinite只会对数值进行判断,非数值一律返回false。
ES5的isFinite在判断前,会把非数值转化为数值然后再进行判断。
那么我想使ES5的这个方法的结果和ES6一样,我可以在ES5中对这个方法进行封装:

function myIsFinite(value){
	return typeof value==='number'&&isFinite(value)
}
console.log(myIsFinite('123'));//false

2.isNaN


作用:
检查一个数值是否为NaN(不是一个数字not a number)。

//ES6的调用方式
console.log(Number.isNaN(NaN));//true
console.log(Number.isNaN('NaN'));//false
console.log(Number.isNaN(123));//false
console.log(Number.isNaN("123"));//false
console.log(Number.isNaN(true));//false
console.log(Number.isNaN('231'/123));//false
console.log(Number.isNaN(true/123));//false
console.log(Number.isNaN(123/0));//false
console.log(Number.isNaN('aaa'/123));//true
//ES5的调用方式
console.log(isNaN(NaN));//true
console.log(isNaN('NaN'));//true
console.log(isNaN(123));//false
console.log(isNaN("123"));//false
console.log(isNaN(true));//false
console.log(isNaN('231'/123));//false
console.log(isNaN(true/123));//false
console.log(isNaN(123/0));//false
console.log(isNaN('aaa'/123));//true

解释:
在做运算的时候会先转数字然后再运算,123/0为Infinite
ES6的Number.isNaN只会对数值进行判断,非数值一律返回false。
ES5的isNaN在判断前,会把非数值转化为数值然后再进行判断。
那么我想使ES5的这个方法的结果和ES6一样,我可以在ES5中对这个方法进行封装:

function myIsNaN(value){
	return typeof value==='number'&&isNaN(value)
}
console.log(myIsNaN('123'));//false

3.parseInt


作用:
1.将开头为有效数字的字符串转化为从开头的有效数字到非数字的前一个数字的整数。
2.或者将含小数点的数字转化为整数。

//ES6的调用方式
console.log(Number.parseInt('100.111sasdasd1111'));//100
console.log(Number.parseInt(100.111));//100
//ES5的调用方式
console.log(parseInt('100.111sasdasd1111'));//100
console.log(parseInt(100.111));//100

解释:
在ES5和ES6中,该方法的作用和结果都是一样的,那为什么ES6要多此一举把parseInt放到Number中呢?目的是为了逐步减少使用全局性的方法,使得语言逐步模块化。就像是将工具箱里的螺丝刀和扳手区分开,螺丝刀放到一个名为‘螺丝刀箱子’的箱子中,扳手放到一个名为‘扳手箱子’的箱子中。

3.parseFloat


作用:
将开头为有效数字的字符串转化为从开头的有效数字到非数字的前一个数字的浮点数。

//ES6的调用方式
console.log(Number.parseFloat('100.111sasdasd1111'));//100.111
console.log(Number.parseFloat(100.111));//100.111
//ES5的调用方式
console.log(parseFloat('100.111sasdasd1111'));//100.111
console.log(parseFloat(100.111));//100.111

解释:
在ES5和ES6中,该方法的作用和结果都是一样的。

4.isInteger


作用:
判断一个值是否为整数,3和3.0都算整数

//ES6的调用方式
console.log(Number.isInteger(1.1));//false
console.log(Number.isInteger(1));//true
console.log(Number.isInteger(1.0));//true
console.log(Number.isInteger('1.1'));//false
console.log(Number.isInteger('1'));//false
console.log(Number.isInteger('aa'));//false
console.log(Number.isInteger(true));//false

想要在ES5中使用这个方法需要进行封装

function myIsInteger(value){
	return typeof value==='number'&&isFinite(value)&&Math.floor(value)===value
}
console.log(myIsInteger('123'));//false

5.EPSILON


作用:
ES6在Number上设置的一个极小值,用来衡量浮点数计算是否准确。

console.log(Number.EPSILON)//2.220446049250313e-16
console.log(0.3-0.2-0.1)//-2.7755575615628914e-17
//2.7755575615628914e-17<2.220446049250313e-16则该计算在误差范围内,计算正确

6.isSafeInteger

作用:
javascript能准确表示的整数范围-9007199254740992~9007199254740992 (不包含首尾)。
解释:
ES6引入了Number.MAX_SAFE_INTERGER和Number.MIN_SAFE_INTERGER两个常量来表示这个范围的上下限。以及Number.isSafeInteger来判断一个整数是否在这个区间内。

二、Math

1.trunc

作用:
对于非数值,会先将非数值用Number方法转为数值然后返回整数部分

console.log(Math.trunc(5));//5
console.log(Math.trunc(5.2224));//5
console.log(Math.trunc("5.2244"));//5
console.log(Math.trunc("as"));//NaN

2.sign

作用:
对于非数值,会先将非数值转为数值然后判断这个数是正数(1)、负数(-1)或者零(0)。

console.log(Math.sign(5));//1
console.log(Math.sign(5.2224));//1
console.log(Math.sign(-5.2224));//-1
console.log(Math.sign(-0));//-0
console.log(Math.sign(0));//0
console.log(Math.sign(+0));//0
console.log(Math.sign("5.2244"));//1
console.log(Math.sign("as"));//NaN

3.cbrt

作用:
对于非数值,会先将非数值转为数值然后计算这个数的立方根。

console.log(Math.cbrt(5));//1.709975946676697
console.log(Math.cbrt(5.2224));//1.7349623082001575
console.log(Math.cbrt(-5.2224));//-1.7349623082001575
console.log(Math.cbrt(0));//0
console.log(Math.cbrt("5.2244"));//1.7351837569438129
console.log(Math.cbrt("as"));//NaN

4.clz32

作用:
对于非数值,会先将非数值转为数值然后将这个数值用无符号32位二进制整数表示,返回其有多少个前置0。

console.log(Math.clz32(5));//29
console.log(Math.clz32(5.2224));//29
console.log(Math.clz32(-5.2224));//0
console.log(Math.clz32(0));//32
console.log(Math.clz32("5.2244"));//29
console.log(Math.clz32("as"));//32

5.imul

作用:
返回两个数以32位带符号整数形式相乘的结果,其结果也是32为带符号整数。
解释:
为什么不能直接乘呢?因为javaScript有精度限制,超过2的53次方就不能准确表示。很大数相乘,低位数都是不准确的,Math.imul可以准确表示低位数。

console.log((2*2)|0);//4
console.log(Math.imul(2,2));//4
console.log((0x7fffffff*0x7fffffff)|0);//0
console.log(Math.imul(0x7fffffff,0x7fffffff));//1

6.fround

作用:
用来表示无法用64个二进制位精确表示的小数,返回最接近这个小数的单精度浮点数。

console.log(Math.fround(1));//1
console.log(Math.fround(1.2));//1.2000000476837158
console.log(Math.fround("2"));//2
console.log(Math.fround("sss"));//NaN

7.hypot

作用:
返回所有参数平方和的平方根

console.log(Math.hypot(3,4));//5
console.log(Math.hypot("3",4));//5
console.log(Math.hypot(3,"actions"));//NaN

8.expm1

作用:
返回e的x次方减一

console.log(Math.expm1(1));//1.718281828459045
console.log(Math.expm1(0));//0
console.log(Math.expm1(-1));//-0.6321205588285577

9.log1p

作用:
返回ln(1+x)

console.log(Math.log1p(1));//0.6931471805599453
console.log(Math.log1p(0));//0
console.log(Math.log1p(-1));//-Infinity

10.log10和log2

作用:
返回以10为底x的对数

console.log(Math.log10(1));//0
console.log(Math.log10(0));//-Infinity
console.log(Math.log10(-1));//NaN
console.log(Math.log2(1));//0
console.log(Math.log2(0));//-Infinity
console.log(Math.log2(-1));//NaN

11.双曲函数方法

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ES6 引入了一些数值扩展,其中包括了新的数值类型(如二进制和八进制)、新的数学方法和常量。 1. 二进制和八进制 在 ES6 中,我们可以使用 `0b` 或 `0B` 前缀来表示二进制数,使用 `0o` 或 `0O` 前缀来表示八进制数。例如: ```javascript let binary = 0b1010; // 二进制的 10 let octal = 0o777; // 八进制的 511 ``` 2. Number.isFinite() `Number.isFinite()` 方法用于检查一个数值是否为有限数。与全局的 `isFinite()` 函数不同的是,`Number.isFinite()` 不会将非数值转换为数值。例如: ```javascript Number.isFinite(Infinity); // false Number.isFinite(-Infinity); // false Number.isFinite(NaN); // false Number.isFinite(123); // true ``` 3. Number.isNaN() `Number.isNaN()` 方法用于检查一个数值是否为 NaN。与全局的 `isNaN()` 函数不同的是,`Number.isNaN()` 只有在参数是数值且等于 NaN 时才返回 true。例如: ```javascript Number.isNaN(NaN); // true Number.isNaN('hello'); // false Number.isNaN(123); // false ``` 4. Number.parseInt() `Number.parseInt()` 是 `parseInt()` 的一个新的方法,它将字符串转换为整数,并且只接受数字作为字符串的参数。例如: ```javascript Number.parseInt('123'); // 123 Number.parseInt('123.45'); // 123 Number.parseInt('hello'); // NaN ``` 5. Number.parseFloat() `Number.parseFloat()` 是 `parseFloat()` 的一个新的方法,它将字符串转换为浮点数,并且只接受数字作为字符串的参数。例如: ```javascript Number.parseFloat('3.14'); // 3.14 Number.parseFloat('3.14hello'); // 3.14 Number.parseFloat('hello'); // NaN ``` 6. Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER `Number.MAX_SAFE_INTEGER` 和 `Number.MIN_SAFE_INTEGER` 属性分别表示 JavaScript 中最大的安全整数和最小的安全整数。例如: ```javascript Number.MAX_SAFE_INTEGER; // 9007199254740991 Number.MIN_SAFE_INTEGER; // -9007199254740991 ``` 7. Number.isSafeInteger() `Number.isSafeInteger()` 方法用于检查一个数值是否为安全整数。安全整数是指符合以下两个条件的整数: - 在 JavaScript 中能够精确表示。 - 绝对值不大于 `Number.MAX_SAFE_INTEGER`。 例如: ```javascript Number.isSafeInteger(123); // true Number.isSafeInteger(9007199254740992); // false,超出了安全整数范围 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值