一、Number内置对象上添加和修改方法

1、将parseInt(), parseFloat() §移植到Number上,原理一样;

//减少全局性方法// ES5的写法console.log(parseInt('2.34') ) // 2// ES6的写法console.log(Number.parseInt('2.34') )// 2console.log(Number.parseInt === parseInt )   //trueconsole.log(Number.parseFloat === parseFloat )   //true

2、在Number对象上新增方法isFinite()和isNaN()

与传统的全局方法isFinite()和isNaN()的区别在于,传统方法先调用Number()将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效 (1)Number.isFinite()用来检查一个数值是否为有限的,有限则为true,否则为false。如果传入的参数,类型不是数值,那么都返回false。

console.log(isFinite('6')); // trueconsole.log(Number.isFinite('6')); // falseconsole.log(Number.isFinite(6)); // trueconsole.log(Number.isFinite(16.6)); // trueconsole.log(Number.isFinite(NaN)); // falseconsole.log(Number.isFinite(null)); // falseconsole.log(Number.isFinite({)); // falseconsole.log(Number.isFinite('ceshi')); // falseconsole.log(Number.isFinite(false)); // false

(2)Number.isNaN()用来检查一个值是否为NaN。如果参数类型不是NaN,则都返回false。

console.log(isNaN('NaN')) // trueconsole.log(Number.isNaN(NaN)) // trueconsole.log(Number.isNaN('NaN')) // falseconsole.log(Number.isNaN(6)) // falseconsole.log(Number.isNaN('16')) // falseconsole.log(Number.isNaN(true)) // falseconsole.log(Number.isNaN(null)) // falseconsole.log(Number.isNaN({})) // false

3、在Number对象上新增方法isInteger()

用来判断一个数值是否为整数。如果小数点后为0或超过小数点精度都会返回true,因此对数据精度的要求较高的,不建议使用此方法。

console.log(Number.isInteger(10)) // trueconsole.log(Number.isInteger(10.1)) // falseconsole.log(Number.isInteger(10.0)) // falseconsole.log(Number.isInteger(null)) // falseconsole.log(Number.isInteger({})) // falseconsole.log(Number.isInteger('ceshi')) // falseconsole.log(Number.isInteger(true)) // falseconsole.log(Number.isInteger(10.0000000000000000000000000007)) // true

二、Math内置对象上添加方法

(1)trunc()方法:去除一个数的小数部分,返回整数部分。对于不是数值的参数,其内部会使用Number方法将其先转为数值。如果转化不行则返回NaN。

console.log(Math.trunc(6.6)) // 6console.log(Math.trunc(6.2)) // 6console.log(Math.trunc(-6.2)) // -6console.log(Math.trunc(-6.6)) // -6console.log(Math.trunc("-6.6")) // -6console.log(Math.trunc(true)) // 1console.log(Math.trunc(false)) // 0console.log(Math.trunc(null)) // 0console.log(Math.trunc()) // NaNconsole.log(Math.trunc("ceshi")) // NaNconsole.log(Math.trunc(NaN)) // NaN

(2)sign()方法:判断一个数到底是正数、负数、还是零。对于不是数值的参数,其内部会使用Number方法将其先转为数值。正数为+1,负数为-1,零也会分+-0,其他的都会返回NaN。

console.log(Math.sign(-6)) // -1console.log(Math.sign(6)) // +1console.log(Math.sign('6')) // +1console.log(Math.sign(0)) // 0console.log(Math.sign(-0)) // -0console.log(Math.sign('')) // 0console.log(Math.sign(true)) // +1console.log(Math.sign(false)) // 0console.log(Math.sign(null)) // 0console.log(Math.sign('ceshi')) // NaNconsole.log(Math.sign({})) // NaNconsole.log(Math.sign()) // NaNconsole.log(Math.sign(NaN)) // NaNconsole.log(Math.sign(undefined)) // NaN

(3)cbrt()方法:计算一个数的立方根。对于不是数值的参数,其内部会使用Number方法将其先转为数值。如果转化不行则返回NaN。

console.log(Math.cbrt(-8)) // -2console.log(Math.cbrt('-8')) // -2console.log(Math.cbrt({})) // NaNconsole.log(Math.cbrt(null)) // 0console.log(Math.cbrt('')) // 0console.log(Math.cbrt('ceshi')) // NaNconsole.log(Math.cbrt(true)) // 1console.log(Math.cbrt(false)) // 0console.log(Math.cbrt(NaN)) // NaNconsole.log(Math.cbrt(undefined)) // NaN

三、BigInt 数据类型(ES2020引入)

转换规则基本与Number()一致,将其他类型的值转为 BigInt。 必须有参数,而且参数必须可以正常转为整数值。如果是小数或其他都报错。

console.log(typeof 453n) // bigintconsole.log(typeof 453n) // bigintconsole.log(BigInt(453)) // 453nconsole.log(BigInt("453")) // 453nconsole.log(BigInt('')) // 0nconsole.log(BigInt(true)) // 1nconsole.log(BigInt(false)) // 0nconsole.log(BigInt(null)) // SyntaxErrorconsole.log(BigInt("453.5")) // SyntaxErrorconsole.log(BigInt(453.5)) // SyntaxErrorconsole.log(BigInt(NaN)) // SyntaxError

欢迎关注公众号(web学习吧),一起学习进步:

本文使用 mdnice 排版