新增Number.isFinite() Number.isNaN()两个方法
Number.isFinite()用来检验是不是数值类型,是返回true 不是返回false
{
console.log(Number.isFinite(4));//true
console.log(Number.isFinite('5'));//false
console.log(Number.isFinite(NaN));//false
console.log(Number.isFinite(undefined));//false
console.log(Number.isFinite(-3));//true
console.log(Number.isFinite(8.9))//true
console.log(Number.isFinite(function (){}));//false
console.log(Number.isFinite(true));//false
console.log(Number.isFinite(null));//false
console.log(isFinite('5'));//true
}
需要注意的是isFinite('5')返回的是true,而Number.isFinite('5')返回的是false
Number.isNaN()用来检验是不是NaN,是返回true 不是返回false
{
console.log(Number.isNaN(NaN));//true
console.log(Number.isNaN(9/NaN));//true
console.log(Number.isNaN('NaN'));//false
console.log(Number.isNaN('3'/'5'));//false
console.log(Number.isNaN('false'/'true'));//true
console.log(isNaN('NaN'));//true
}
需要注意的是isNaN('NaN')返回的是true,而Number.isNaN('NaN')返回的是false
Number.parseInt() Number.parseFloat()
es6把parseInt()和parseFloat()放到了Number上,就是为了逐步减少全局性方法,使得语言逐步模块化。
{
console.log(Number.parseInt('12'));//12
console.log(Number.parseInt('12.33'));//12
console.log(Number.parseInt('12Afsjflk'))//12
console.log(Number.parseInt('sdf32'))//NaN
console.log(Number.parseFloat('12.4'));//12.4
console.log(Number.parseFloat('12'))//12
console.log(Number.parseFloat('12dfgdfg'));//12
console.log(Number.parseFloat('12.23dffg'));//12.23
console.log(Number.parseFloat('sdfsdf12.32'));//NaN
}
Number.parseInt() Number.parseFloat()行为与原来的保持不变
Number.isInteger()
Number.isInteger() 用来判断一个值是否为整数、
{
console.log(Number.isInteger(12));//true
console.log(Number.isInteger(23.2));//false
console.log(Number.isInteger(12.0))//true
console.log(Number.isInteger('12'));//false
}
在 JavaScript 内部,整数和浮点数是同样的储存方法,所以12和12.0被视为同一个值。
Math.trunc()
Math对象的拓展中trunc()用于去除一个数的小数部分返回整数部分
{
console.log(Math.trunc(12.4));//12
console.log(Math.trunc(12.9));//12
console.log(Math.trunc('12.4'));//12
console.log(Math.trunc(-4));//-4
console.log(Math.trunc(-4.7));//-4
console.log(Math.trunc('-12.8'));//-12
console.log(Math.trunc('3.7asd'));//NaN
console.log(Number.parseInt(-12.8))//-12
console.log(Number.parseInt('12.89sdsd'))//12
}
在没有Math,trunc()以前,都是用parseInt()方法将小数转换成整数,很显然 还是parseInt强大
Math.sign()
Math.sign方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。
{
console.log(Math.sign(5));//+1
console.log(Math.sign(-5));//-1
console.log(Math.sign(0));//0
console.log(Math.sign(-0));//-0
console.log(Math.sign('9'));//+1
console.log(Math.sign('dasdf'));//NaN
}
参数为正数,返回+1;参数为负数,返回-1;参数为0,返回0;参数为-0,返回-0;其他值,返回NaN。
指数运算符(**)
es6新增了一个指数运算符(**),和 Math.pow()功能一样
{
let a=3;
a=a**3;
console.log(a);//27
let b=2;
b**=3;//b=b**3
console.log(b);//8
console.log(99**99);//3.697296376497268e+197
console.log(Math.pow(99,99));//3.697296376497263e+197
}
指数运算符与Math.pow的实现不相同,对于特别大的运算结果,两者会有细微的差异。
数字分隔符 _
数字分隔符,可以在数字之间创建可视化分隔符,通过_下划线来分割数字,使数字更具可读性
{
const money = 1_000_000_000;
//等价于
const money = 1000000000;
1_000_000_000 === 1000000000; // true
}
万年不变的国际惯例:
关于数值的拓展,就介绍这些了,如果想看更加详细的资料请狠狠的点击这里~