【JavaScript】ES6 数值的扩展

Number 新增方法


Number.parseInt()

ES5 时,是挂载在 window 身上的;ES6 是挂载在 Number 身上

所以,现在 parseInt()parseFloat() 移到 Number 对象上,功能不变

// ES5 写法
parseInt('12.34'); // 12
parseFloat('123.45#'); // 123.45
// ES6 写法
Number.parseInt('12.34'); // 12
Number.parseFloat('123.45#'); // 123.45

更新目的:减少全局方法,使语言逐步模块化。其实是同一个函数

Number.parseInt === parseInt; // true
Number.parseFloat === parseFloat; // true

Number.isFinite()

用来检查一个数值是否为有限的,不会进行隐式类型转换

Number.isFinite(15); // true
Number.isFinite(0.8); // true
Number.isFinite(NaN); // false
Number.isFinite(Infinity); // false
Number.isFinite('15'); // false
Number.isFinite(true); // false

是数字就返回 true,否则返回 false,不会进行隐式类型转换,NaN'3' 都是 false

  • ES5 的 window.isFinite() 会进行隐式类型转换;所以这俩函数不是一样的
Number.isFinite == window.isFinite; // false

Number.isNaN()

用来检查一个值是否为 NaN,不会进行隐式类型转换,只有值严格等于 NaN 时,才会返回 true

  • ES5 的 window.isNaN() 会进行隐式类型转换
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0); // true

// 以下 window.isNaN() 会返回 true
Number.isNaN("NaN"); // false
Number.isNaN(undefined); // false
Number.isNaN({}); // false
Number.isNaN("blabla"); // false

Number.isInteger()

用来判断一个值是否为整数,不会进行隐式类型转换

需要注意的是,在 JS 中,整数和浮点数是同样的储存方法,所以 3 和 3.0 被视为同一个值

console.log(Number.isInteger(3)); // true
console.log(Number.isInteger(3.0)); // true
console.log(Number.isInteger(3.3)); // false
console.log(Number.isInteger('3')); // false



Math 对象



Math 对象的扩展


Math.trunc()

用于截取数值,保留整数部分

  • 对于非数值,会进行隐式类型转换
  • 对于空值和无法截取整数的值,返回 NaN
Math.trunc(4.1); // 4
Math.trunc(4.9); // 4
Math.trunc(-4.1); // -4
Math.trunc(-4.9); // -4
Math.trunc(-0.1234); // -0
  • 简写:~~
~~2.3 // 2
~~-2.3 // -2

Math.sign()

  • 用于判断一个数是正数、负数、还是零
  • 对于非数值,会进行隐式类型转换
  1. 参数为正数,返回 +1
  2. 参数为负数,返回 -1
  3. 参数为 0,返回 0
  4. 参数为 -0,返回 -0
  5. 其他值,返回 NaN
Math.sign(-5) // -1
Math.sign(5) // +1
Math.sign(0) // +0
Math.sign(-0) // -0
Math.sign(NaN) // NaN

Math.sign('') // 0
Math.sign(true) // +1
Math.sign(null) // 0
Math.sign('9') // +1
Math.sign('foo') // NaN
Math.sign() // NaN
Math.sign(undefined) // NaN

Math.cbrt()

用于计算一个数的立方根;对于非数值,会进行隐式类型转换

Math.cbrt(-1); // -1
Math.cbrt(0); // 0
Math.cbrt(1); // 1
Math.cbrt(27); // 3

Math.hypot()

返回所有参数的平方和的平方根;对于非数值,会进行隐式类型转换

Math.hypot(3, 4); // 5
Math.hypot(3, 4, 5); // 7.0710678118654755
Math.hypot(); // 0
Math.hypot(NaN); // NaN
Math.hypot(3, 4, 'foo'); // NaN
Math.hypot(3, 4, '5'); // 7.0710678118654755
Math.hypot(-3); // 3
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JS.Huang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值