ES6扩展 数值扩展

新的进制表示法

  • 以前八进制可以直接以0开头(octonary),为了将它与十进制区分开,ES6规定八进制必须以0O或者0o开头
  • 二进制则以0b或者0B开头(binary)。
1
2
console.log(0o16);//14
console.log(0b111);//7

新的方法

parseInt()与parseFloat()转换为整数与小数

  • ES6之前,parseInt()与parseFloat()都是挂在window对象上的,window可省略。ES6则将parseInt()与parseFloat()都放在了Number对象上
  • 但无论对象如何改变,parseInt()与parseFloat()的用途都没改变,依旧是可以将字符串或者数字转换为相应的整数或小数
    1
    2
    3
    4
    console.log(window.parseInt("1.23"));//1
    console.log(parseFloat("1.23"));//1.23
    console.log(Number.parseInt("1.23"));//1
    console.log(Number.parseFloat("1.23"));//1.23

isNaN()判断是否“非数值”

  • isNaN()判断是否“非数值”,遇到字符串会看能不能将其转换为数值再进行判断.
  • 注意:只有遇到Nan他才会返回true,其他不管是什么类型,包括true与false都被算作是数值,返回false!
    1
    2
    3
    4
    5
    6
    console.log(Number.isNaN(NaN));//true
    console.log(Number.isNaN(-NaN));//true
    console.log(Number.isNaN(1)); //false
    console.log(Number.isNaN('1'));//false
    console.log(Number.isNaN(true));//false
    console.log(Number.isNaN(false));//false

isFinite()判断是否是无限的

1
2
3
4
5
6
7
console. log(Number. isFinite(Infinity)); //false,Infinity有限的
console. log(Number. isFinite(2/0)); //false
console. log(Number. isFinite(2/4)); //true
console. log(Number. isFinite(1234)); //true
console. log(Number. isFinite('12341')); //false
console. log(Number. isFinite(true)); //false
console. log(Number. isFinite(NaN));//false

安全数

  • 用来判断这个整数是否处于JS内表示的范围之内。
  • 即判断这个整数是否在最大值Number.MAX_SAFE_INTEGER与最小值Number.MIN_SAFE_INTEGER之间。
    1
    2
    console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER-1));//true,比最大值小1肯定是安全数
    console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER+1));//false

幂运算**(新的运算符)

  • 注意:它是右结合的,也就是说,在没有括号的情况下他是自动从右往左进行运算的
  • 例子分析
    a算出的是2的10次方1024;
    b如果是左结合则应该得到1,但是得到的是2,和d得到的值一样,也就是说**幂运算是右结合的;
    想要达到左结合的效果,可以像c一样使用括号
    1
    2
    3
    4
    5
    6
    7
    8
    let a = 2 ** 10;
    console.log(a);//1024
    let b = 2 ** 10 ** 0;
    console.log(b);//2
    let c = (2 ** 10) ** 0;
    console.log(c);//1
    let d = 2 ** (10 ** 0);
    console.log(d);//2