• ES6 String和Number扩展


    一、String 扩展

    ①传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6 又提供了三种新方法。

    • includes():返回布尔值,表示是否找到了参数字符串。第二个参数表示搜索起始位置
    • startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。第二个参数表示搜索起始位置
    • endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。第二个参数针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束
    let s = 'Hello world!';
    
    s.startsWith('Hello') // true
    s.endsWith('!') // true
    s.includes('o') // true
    let s = 'Hello world!';
    
    s.startsWith('world', 6) // true
    s.endsWith('Hello', 5) // true
    s.includes('Hello', 6) // false

    repeat方法返回一个新字符串,表示将原字符串重复n次。参数如果是小数,会被取整。如果repeat的参数是负数或者Infinity,会报错。

    'x'.repeat(3) // "xxx"
    'hello'.repeat(2) // "hellohello"
    'na'.repeat(0) // ""
    
    'na'.repeat(2.9) // "nana"
    
    'na'.repeat(Infinity)
    // RangeError
    'na'.repeat(-1)
    // RangeError
    
    'na'.repeat(-0.9) // ""
    
    na'.repeat(NaN) // ""
    
    'na'.repeat('na') // ""
    'na'.repeat('3') // "nanana"

    ③模板字符串

    传统的 JavaScript 语言,输出模板通常是这样写的。

    $('#result').append(
      'There are <b>' + basket.count + '</b> ' +
      'items in your basket, ' +
      '<em>' + basket.onSale +
      '</em> are on sale!'
    );

    上面这种写法相当繁琐不方便,ES6 引入了模板字符串解决这个问题。

    $('#result').append(`
      There are <b>${basket.count}</b> items
       in your basket, <em>${basket.onSale}</em>
      are on sale!
    `);

    模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。模板字符串中嵌入变量,需要将变量名写在${}之中。

    function authorize(user, action) {
      if (!user.hasPrivilege(action)) {
        throw new Error(
          // 传统写法为
          // 'User '
          // + user.name
          // + ' is not authorized to do '
          // + action
          // + '.'
          `User ${user.name} is not authorized to do ${action}.`);
      }
    }

    二、Number 扩展

    ①ES6 将全局方法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.isInteger()用来判断一个数值是否为整数,JavaScript 内部,整数和浮点数采用的是同样的储存方法,比如 25 和 25.0 被视为同一个值。如果参数不是数值,Number.isInteger返回false

    Number.isInteger(25) // true
    Number.isInteger(25.1) // false
    Number.isInteger(25.0) // true
    Number.isInteger() // false
    Number.isInteger(null) // false
    Number.isInteger('15') // false
    Number.isInteger(true) // false

    ③ES6 在 Math 对象上新增了 17 个与数学相关的方法。所有这些方法都是静态方法,只能在 Math 对象上调用。

    • Math.trunc方法用于去除一个数的小数部分,返回整数部分。
    • Math.sign方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。
    • Math.cbrt方法用于计算一个数的立方根。

    更多详细知识点,请参考ECMAScript 6 入门

  • 相关阅读:
    【洛谷4836】Toy Train 玩具火车(博弈)
    Zabbix Scheduled reports中文乱码
    Openlayers 卷帘地图
    uniapp 使用 uniupgradecenter
    postgresql存储转义字符
    Docker(十一): 安装zookeeper
    Docker(十): 安装Jenkins
    home ftp server使用方法 Dawa
    ImportError: cannot import name 'HTTPClientFactory' from 'twisted.web.client' (unknown location)
    Python 绝对路径与相对路径
  • 原文地址:https://www.cnblogs.com/EricZLin/p/9366808.html
Copyright © 2020-2023  润新知