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 Array

    学习es6时做得小笔记

  • ES6 let命令和const命令

    基于ES6标准入门(第3版)这本书的笔记要学习angula,vue,react等新的前端框架,必须先熟悉ES6的语...

  • ES6 变量的结构赋值,解构赋值,应用场景

    基于ES6标准入门(第3版)这本书的笔记要学习angula,vue,react等新的前端框架,必须先熟悉ES6的语...

  • ES6 正则表达式的扩展

    基于ES6标准入门(第3版)这本书的笔记要学习angula,vue,react等新的前端框架,必须先熟悉ES6的语...

  • ES6 字符串的扩展方法

    基于ES6标准入门(第3版)这本书的笔记要学习angula,vue,react等新的前端框架,必须先熟悉ES6的语...

  • ES6学习笔记3

    字符串的unicode表示法 ES6只要将码点放入大括号,就能正确解读该字符。JavaScript 共有 6 种方...

  • ES6_note

    ES6笔记 es6 - 解构 数组的 解构赋值 let [a, b, c] = [1, 2, 3]; 这种写法属于...

  • spark_learn

    Angular2学习笔记——NgModule es6 新增的map和foreach AngularJS2.0 学习...

  • 【一起来烧脑】入门ES6体系

    为什么要学习ES6掌握ES3、ES5、ES6的联系和区别 快速入门ES6 学会快速构建ES6的编译环境 学习ES6...

  • Ant Design Pro的知识储备

    Less 笔记 Less 官方文档 ReactJs笔记 ReactJs官方文档 ES6笔记 ES6文档 dvaJs...

网友评论

    本文标题:ES6学习笔记3

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