美文网首页
ES6 数值的扩展

ES6 数值的扩展

作者: 前白 | 来源:发表于2020-11-25 11:19 被阅读0次

    本节我们学习 ES6 中的常用数据类型之数值(Number)类型。ES6 中除了 JavaScript 中的六种数据类型之外,还引入了一种新的原始数据类型 Symbol,它是 JavaScript 语言的第七种数据类型:

    • Number (数值)
    • String(字符串)
    • Boolean(布尔值)
    • Object(对象)
    • undefined
    • null
    • Symbol

    二进制和八进制表示法

    ES6 中提供了二进制和八进制数值的新的写法:

    • 二进制的新写法可以使用前缀 0b 或者 0B 表示。
    let a = 0b1001;
    console.log(a);  // 输出:9
    
    • 八进制的新写法可以使用前缀 0o 或者0O表示。
    let b = 0o345;
    console.log(b);  // 输出:229
    

    ES5 开始,在严格模式之中,八进制就不再允许使用前缀 0 表示,ES6 进一步明确,要使用前缀0o表示。

    // 非严格模式
    (function(){
    console.log(0o11 === 011);
    })() // true
      
    // 严格模式
    (function(){
        'use strict';
        console.log(0o11 === 011);
    })() 
    

    执行代码后,报错信息如下所示:

    SyntaxError: Octal literals are not allowed in strict mode.
    

    如果要将 0b0o前缀的字符串数值转为十进制,要使用 Number 方法。

    示例:
    console.log(Number('0b110'));  // 输出:6
    console.log(Number('0o43'));   // 输出:35
    

    Number对象的常用方法

    ES6Number 对象上提供了一些方法,我们一起来看一下。

    isFinite()方法

    isFinite() 方法可以用于检查一个数值是否为有限的。如果是则返回 true,不是则返回 false

    示例:
    console.log(Number.isFinite(1));      // true 
    console.log(Number.isFinite(1000.0)); // true 
    console.log(Number.isFinite('xkd'));  // false
    console.log(Number.isFinite(NaN));    // false
    console.log(Number.isFinite(true));   // false
    

    上述代码中可以看到,只有当 isFinite 方法中的参数为有限数值时,才会返回 true,参数的值为字符串或者布尔类型等都会返回 false

    isNaN()方法

    isNaN() 方法用来检查一个值是否是 NaN,为 NaN 则返回 true,否则返回 false

    示例:

    可以看到,下面代码中只有第一个 isNaN() 方法的返回结果为 true

    console.log(Number.isNaN(NaN));    // true
    console.log(Number.isNaN(null));   // false 
    console.log(Number.isNaN('xkd'));  // false
    console.log(Number.isNaN(true));   // false
    

    parseInt()方法

    parseInt() 方法用于将值转换为整型。如果参数不为数值类型,则会返回 NaN

    示例:
    console.log(Number.parseInt(1.215));  // 1
    console.log(Number.parseInt(null));   // NaN 
    console.log(Number.parseInt(8.0));    // 8
    console.log(Number.parseInt('xkd'));  // NaN
    

    parseFloat()方法

    parseFloat() 方法用于将值转换为浮点型。

    示例:
    console.log(Number.parseFloat(2.15));  // 2.15
    console.log(Number.parseFloat(7));     // 7 
    console.log(Number.parseFloat(16));    // 16
    console.log(Number.parseFloat(null));       // NaN
    console.log(Number.parseFloat(undefined));  // NaN
    console.log(Number.parseFloat('xkd'));      // NaN
    

    isInteger()方法

    isInteger() 方法用来判断一个值是否为整数。需要注意的是,在 JavaScript 内部,整数和浮点数是同样的储存方法,例如 11.0 被视为同一个值。

    示例:

    从下面代码中可以看出,只有当参数为整数结果才会返回 true,当参数不为整数或者数值类型的值时,也会返回 false

    console.log(Number.isInteger(2.15));  // false
    console.log(Number.isInteger(7));     // true
    console.log(Number.isInteger(16));    // true
    console.log(Number.isInteger('xkd')); // false
    console.log(Number.isInteger(null));  // false
    console.log(Number.isInteger(true));  // false
    

    Math对象的方法

    ES6 在 Math 对象上新增了一些与数值相关的方法,这些方法全部都是静态方法,只能在 Math 对象上调用。

    trunc()方法

    trunc() 方法用于去除一个数的小数,只保留整数部分,也可以理解为取整。

    示例:
    console.log(Math.trunc(1.85));  // 1
    console.log(Math.trunc(-7.15)); // -7
    console.log(Math.trunc(25));    // 25
    console.log(Math.trunc('xkd')); // NaN
    console.log(Math.trunc(true));  // 1
    console.log(Math.trunc(false)); // 0
    

    需要注意的是,当方法中参数的类型为字符串时,会返回一个 NaN,当参数为 true 时返回 1,为 false 则返回 0

    sign()方法

    sign() 方法用来判断一个数是正数、负数、或者 0。当参数为负数时返回 -1,为 0 时返回 0,为正数时返回 1

    示例:
    console.log(Math.sign(-7));    // -1
    console.log(Math.sign(0));     // 0
    console.log(Math.sign(34));    // 1
    console.log(Math.sign('xkd')); // NaN
    console.log(Math.sign(true));  // 1
    console.log(Math.sign(false)); // 0
    

    cbrt()方法

    cbrt() 方法用于计算一个数的立方根。

    示例:
    console.log(Math.cbrt(8));      // 2
    console.log(Math.cbrt(27));     // 3
    console.log(Math.cbrt(9));      // 2.080083823051904
    console.log(Math.cbrt(0));      // 0
    console.log(Math.cbrt(true));   // 1
    console.log(Math.cbrt(false));  // 0
    console.log(Math.cbrt('xkd'));  // NaN
    

    clz32()方法

    clz32() 方法将参数转为 32 位无符号整数的形式,然后返回这个 32 位值里面有多少个前导 0

    示例:
    console.log(Math.clz32(1));     // 31
    console.log(Math.clz32(0));     // 32
    console.log(Math.clz32(14));    // 28
    console.log(Math.clz32(188));   // 24
    console.log(Math.clz32(true));  // 31
    console.log(Math.clz32(NaN));   // 32
    

    imul()方法

    imul() 方法返回两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32 位的带符号整数。

    示例:
    console.log(Math.imul(2, 5));   // 10
    console.log(Math.imul(-1, 4));  // -4
    console.log(Math.imul(-2, -9)); // 18
    console.log(Math.imul(NaN));    // 0
    console.log(Math.imul(true));   // 0
    

    fround()方法

    fround() 方法返回一个数的单精度浮点数形式。

    示例:
    console.log(Math.fround(1.125));   // 1.125
    console.log(Math.fround(1000));    // 1000
    console.log(Math.fround(-1));      // -1
    console.log(Math.fround(1.0254));  // 1.0254000425338745
    

    hypot()方法

    hypot() 方法返回所有参数的平方和的平方根。

    示例:
    console.log(Math.hypot(-1));    // 1
    console.log(Math.hypot(3, 5));  // 5.8309518948453
    console.log(Math.hypot(NaN));   // NaN
    console.log(Math.hypot('xkd')); // NaN
    console.log(Math.hypot(true));  // 1
    console.log(Math.hypot());      // 0
    

    相关文章

      网友评论

          本文标题:ES6 数值的扩展

          本文链接:https://www.haomeiwen.com/subject/xlagiktx.html