ES6 数值扩展的简单分析

186 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

在ES5中,我们存在几个全局函数 isNaN函数,isFinite函数,parseInt函数,parseFloat函数等,对于这些全局函数的使用很简单。 但是在ES6的标准中,这些方法被移植到了Number对象上,也就是原本属于全局对象window下的函数,现在属于Number对象上了,同样被处理的函数还有isFinite函数,parseInt函数,parseFloat函数。 以下通过几个例子理解:


{
    // es6 的二进制表示方法,以0b开头
  console.log('B',0B111110111); // B 503

    // es6 的八进制表示方法,以0o开头
    console.log(0o767); // 503
}

{
  // 判断是否有穷
  console.log('15',Number.isFinite(15)); // 15 true
  console.log('NaN',Number.isFinite(NaN)); // NaN false
  console.log('1/0',Number.isFinite('true'/0));// 1/0 false
    // 判断是不是数字
  console.log('NaN',Number.isNaN(NaN)); // NaN true
  console.log('0',Number.isNaN(0)); // 0 false

}

// 判断是不是整数
{
  console.log('25',Number.isInteger(25)); // 25 true
  console.log('25.0',Number.isInteger(25.0)); // 25.0 true
  console.log('25.1',Number.isInteger(25.1)); // 25.1 false
  // 接收的必须为数值而不是字符串
  console.log('25',Number.isInteger('25')); // 25 false
}

{
  // MAX_SAFE_INTEGER 和 MIN_SAFE_INTEGER 都是一个常量
  console.log(Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER);
  // 10是一个安全的数,在MAX_SAFE_INTEGER 和 MIN_SAFE_INTEGER范围内
  console.log('10',Number.isSafeInteger(10)); // 10 true
    // a 不是一个数字
  console.log('a',Number.isSafeInteger('a')); // a false
}
// es6 只取整数部分
{
  console.log(4.1,Math.trunc(4.1)); // 4.1  4
  console.log(4.9,Math.trunc(4.9)); // 4.9  4
}

//判断正负
{
  console.log('-5',Math.sign(-5));  // -5 -1
  console.log('0',Math.sign(0)); // 0  0
  console.log('5',Math.sign(5)); // 5  1
  console.log('50',Math.sign('50')); // 50  1
  console.log('foo',Math.sign('foo')); // foo  NaN
}

//立方根的计算
{
  console.log('-1',Math.cbrt(-1)); // -1   -1
  console.log('8',Math.cbrt(8)); //  8    2
}