1.数值分隔符
说明:可以通过_添加分隔符,提高可读性,但是数值分隔符可以不指定间隔的位数
let number = 1_000
console.log(number); //1000
let number1 = 1_0_0_0
console.log(number === number1); //true
注意:
- 不能放在数值的最前面或者最后,并且不能两个相邻的分隔符
- 小数点的前后也不能有分隔符
- 分隔符主要原因是为了编码书写数值的方便而不是处理外部输入的数据,所以不能被Number()方法,parseInt()方法,parseFloat()方法转换
2.Nunber.isFinite
说明:检查一个数值是否为有限的,如果类型不是数值类型,全都返回false
const num1 = Number.isFinite(15)
console.log(num1); //true
const num2 = Number.isFinite(true)
console.log(num2); //false
3.Number.isNaN
说明:检查一个值是否为空,如果参数的类型不是NaN,全都返回false
console.log(Number.isNaN(5)); //false
console.log(Number.isNaN(NaN)); //true
4.parseInt,parseFloat
4.1 ES5中
console.log(parseInt(5.5)); //5
console.log(parseFloat(6.66)); //6.66
4.2 ES6中
console.log(Number.parseInt(6.6)); //6
console.log(Number.parseFloat(6.6)); //6.6
注意:ES6中目的是减少全局性方法,使得语言逐渐规范化
5.Number.isInteger
说明:判断一个数值是否为整数,但是如果对于精度要求特别高,那么不建议使用
console.log(Number.isInteger(5.5)); //false
console.log(Number.isInteger(5)); //true
6.Math对象的扩展
6.1Math.trunc方法
说明:用于去除一个数的小数部分,返回整数部分
console.log(Math.trunc(5.5)); //5
console.log(Math.trunc(-5.9)); //-5
对于非数值的类型会先转换成数值型,在截取
console.log(Math.trunc(true)); //1
// 关于null会被Number转换成0
console.log(Math.trunc(null)); //0
console.log(Number(null)); //0
对于空值和无法截取整数的值,返回NaN
console.log(Math.trunc(NaN)); //NaN
console.log(Math.trunc('foo')); //NaN
6.2Math.sign()
说明:判断一个属到底是正数,负数,还是零,对于非数值的,会先转成数值
console.log(Math.sign(2)); //1
console.log(Math.sign(-2));//-1
console.log(Math.sign(0)); //0
console.log(Math.sign(-0));//-0
console.log(Math.sign("good")); //Nan
总结:数为正数,返回 + 1;参数为负数,返回 - 1;参数为 0,返回0;参数为 - 0,返回 - 0;其他值,返回NaN。
6.3Math.cbrt
说明:计算一个数的立方根
console.log(Math.cbrt('8')); //2
console.log(Math.cbrt("8.8")); //2.0645602309127344
7.BigInt数据类型
说明:为了与Nunber类型区别,BigInt类型的数据必须添加后缀n,并且bigint数据类型是整数
const num3 = 12n
const num4 = 20n
console.log(num3 + num4); //32n
BigInt与普通整数是两种值,它们之间并不相等
console.log(num3 == 12); //false
BigInt函数与Number函数基本一致
console.log(BigInt(12)); //12n
8.转换规则
说明:Boolean函数,Number函数,String函数可将BigInt类型转变成布尔,数字,字符串,转换BigInt成为其他类型中n会消失。
console.log(Boolean(5n)); //true
console.log(Number(5n)); //5
console.log(String(5n)); //5
取反运算符,也可以将BigInt转为布尔值
console.log(!12n); //false
console.log(!0n); //true
数学运算,几乎所有的运算符都可以用在BigInt中
console.log(12n / 3n); //4n
console.log(12n * 10n); //120n
总结:对于大部分的Math的方法,对于非数值的参数,都会转成数值型,再执行