数值的扩展
- 数值表示
- 二进制:0b1111,0B1111
- 八进制: 0o17,0O17
- 十进制: 15
- 十六进制: 0xf,OxF
- Number新增静态方法/数值判断方法不进行类型转换
Number.isFinite()
Number.isNaN()
Number.isInteger()
Number.isSafeInteger()
Number.parseInt()
Number.parseFloat()
- Number新增静态属性
Number.EPSILON //js能表示的最小正数常量
Number.MAX_SAFE_INTEGER //js能表示的最大整数
Number.MIN_SAFE_INTEGER //js能表示的最小整数
- Math/Math方法当入参不是数值类型时先进行类型转换
Math.trunc()//正数Math.floor(),负数Math.ceil()
Math.sign() // 1,-1,0,-0,NaN
Math.cbrt(x) // (x<0?-1:1)*Math.pow(Math.abs(x),1/3)
-
Math.clz32() 32位二进制数前导零个数
Math.clz32(NaN) // 32 Math.clz32(Infinity) // 32
Math.imul(a,b) // (a*b)|0
Math.fround() //双精度转单精度,超出单精度表示范围的值被截取
Math.hypot() //所有参数的平方和的平方根
- 对数方式
-
Math.log()
-
Math.expm1()
-
Math.log1p()
-
Math.log10()
-
Marg.log2()
-
- 双曲函数
Math.sinh()
Math.cosh()
Math.tanh()
Math.asinh()
Math.acosh()
Math.atanh()
- 指数运算符
Math.pow(a,b) === a**b
tip
- Number静态方法与对应普通方法
- Number静态在进行判断时不进行类型转换,对于非数值类型直接返回false
- Number.isNaN() 和isNaN()
//Number.isNaN不进行数值转换,直接判断是否为NaN //isNaN 非数值转成数值,无法转换变成NaN,NaN使isNaN返回true isNaN('a') // true isNaN(1) // false isNaN('1') // false isNaN([]) // false isNaN({}) // true isNaN(null) // false isNaN(undefined) // true isNaN(true) // false isNaN(false) // false
- Number.isFinite()和isFinite()
//Number.isFinite不进行数值转换,直接判断非数值就是false //isFinite 非数值转成数值,无法转换变成NaN,NaN,Infinity,-Infinity 使得 isFinite返回false isFinite('a') // false isFinite(1) // true isFinite('1') // true isFinite([]) // true isFinite({}) // false isFinite(null) // true isFinite(undefined) // false isFinite(true) // true isFinite(false) // true isFinite(Infinity) // false isFinite(-Infinity) // false isFinite(NaN) // false
- Number.isNaN() 和isNaN()
- Number静态在进行判断时不进行类型转换,对于非数值类型直接返回false