zoukankan      html  css  js  c++  java
  • 《ES6标准入门》读书笔记 第4章

    Unicode强化

    新的表示法

    "u0061" === 'a' // 双字节Unicode
    "uD842uDFB7" // 之前,大于uFFFF的Unicode必须拆写成两个双字节
    "u{20BB7}" // ES6提供了这种表示法,无需拆写
    

    codePointAt()

    JS内部,字符采用UTF-16编码保存,每个字符固定两个字节。而之前的API,对于Unicode码点大于0xFFFF的字符,会被认为是两个字符。例如.length会为2,.charAt(0)不能读出整个字符(而只能读出前两个字节)。

    对于占位两个双字节的字符,使用.codePointAt(0)会得到一个大于0xFFFF的值,就是该字符的码点,而.codePointAt(1)就无意义了。

    String.fromCodePoint()

    之前的API的String.fromCharCode当然也无法处理大于0xFFFF的字符(高位被舍去),而String.fromCodePoint可以。

    for of支持

    for of除了可以顺序遍历字符串外,还支持识别大于0xFFFF的码点。

    其他新API

    includes(),startsWith(),endsWith()

    includes代替了indexOf !== -1。后两个判断是否以该子串开始或结束。

    都可指定第二个参数n表示开始搜索的位置(前两个),或范围为前n个字符(endsWith)。

    repeat()

    'x'.repeat(3) // 'xxx'
    'y'.repeat(0) // ''
    

    padStart(), padEnd()

    如果字符串不足某个长度,可在头或者尾补上特定子串或子串的一部分直到恰凑满长度。

    模板字符串

    使用反引号定义。在里面可以用${}嵌入变量或表达式。多行形式下所有空格和换行也会被保留。

    模板字符串甚至可以嵌套。

    `<p>${addrs.map(addr => `${addr.x} - ${addr.y}`)}</p>`
    

    模板字符串还可以用来传参,这也是jsx``的实现原理。

    tag`Hello ${x} world ${y}`
    // 相当于
    tag(['Hello ', ' world ', ''], x, y)
    

    String.raw()

    返回一个每一个反斜线自身都被转义的字符串。

  • 相关阅读:
    Linux 上网络监控工具 ntopng 的安装
    Linux 运维工程师的十个基本技能点
    HashMap、Hashtable、ConcurrentHashMap的区别
    Spark会产生shuffle的算子
    Scala基础:闭包、柯里化、隐式转换和隐式参数
    Scala基础:模式匹配和样例类
    Scala基础:面向对象之trait
    Scala基础:面向对象之对象和继承
    Scala基础:类和构造器
    Scala基础:数组(Array)、映射(Map)、元组(Tuple)、集合(List)
  • 原文地址:https://www.cnblogs.com/zxuuu/p/12870939.html
Copyright © 2011-2022 走看看