ES6学习笔记3

作者: whowhenhowxxx | 来源:发表于2018-08-14 00:46 被阅读0次

    字符串的unicode表示法

    ES6只要将码点放入大括号,就能正确解读该字符。
    JavaScript 共有 6 种方法可以表示一个字符。

    '\z' === 'z'  // true
    '\172' === 'z' // true
    '\x7A' === 'z' // true
    '\u007A' === 'z' // true
    '\u{7A}' === 'z' // true
    

    codePointAt()

    ES6 提供了codePointAt方法,能够正确处理 4 个字节储存的字符,返回一个字符的码点。

    • charCodeAt()会识别错误,认为length只有2,而第0位不能正确返回十进制码点,而是返回前两个字节和后两个字节。而codePointAt方法就可以正确返回整个汉字的码点,第一位则正确返回为后两位的码点。
    var s = "𠮷";
    s.length // 2
    s.charCodeAt(0) // 55362
    s.charCodeAt(1) // 57271
    
    s.codePointAt(0) // 134071
    s.codePointAt(1) // 57271
    
    • codePointAt方法是测试一个字符由两个字节还是由四个字节组成的最简单方法。
      比较它和0XFFFF的大小即可。

    String.fromCodePoint()

    • ES5 提供String.fromCharCode方法,用于从码点返回对应字符,但是这个方法不能识别 32 位的 UTF-16 字符(Unicode 编号大于0xFFFF)。上面那个方法的反向方法。
    • String.fromCodePoint则是ES6提供的替代这个方法的新方法。

    注意,fromCodePoint方法定义在String对象上,而codePointAt方法定义在字符串的实例对象上。

    遍历方法

    • ES6 为字符串添加了遍历器接口(详见《Iterator》一章),使得字符串可以被for...of循环遍历。
    • 这个方法可以正确识别汉字,而原先的for循环不可以。

    at方法(提案)

    charAt方法期望返回的是用2个字节表示的字符,但汉字“𠮷”占用了4个字节,charAt(0)表示获取这4个字节中的前2个字节,很显然,这是无法正常显示的。

    normalize

    ES6 提供字符串实例的normalize()方法,用来将字符的不同表示方法统一为同样的形式,这称为 Unicode 正规化。

    '\u01D1'.normalize() === '\u004F\u030C'.normalize()
    // true
    

    normalize方法可以接受一个参数来指定normalize的方式,参数的四个可选值如下。

    • NFC,默认参数,表示“标准等价合成”(Normalization Form Canonical Composition),返回多个简单字符的合成字符。所谓“标准等价”指的是视觉和语义上的等价。
    • NFD,表示“标准等价分解”(Normalization Form Canonical Decomposition),即在标准等价的前提下,返回合成字符分解的多个简单字符。
    • NFKC,表示“兼容等价合成”(Normalization Form Compatibility Composition),返回合成字符。所谓“兼容等价”指的是语义上存在等价,但视觉上不等价,比如“囍”和“喜喜”。(这只是用来举例,normalize方法不能识别中文。)
    • NFKD,表示“兼容等价分解”(Normalization Form Compatibility Decomposition),即在兼容等价的前提下,返回合成字符分解的多个简单字符。

    includes(), startsWith(), endsWith()

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

    • includes():返回布尔值,表示是否找到了参数字符串。
    • startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
    • endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
      (未完待续)

    相关文章

      网友评论

        本文标题:ES6学习笔记3

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