美文网首页前端
ES6字符串扩展

ES6字符串扩展

作者: 佛系跳伞运动员 | 来源:发表于2018-04-02 15:43 被阅读58次

ES6字符串扩展

ES6加强了对 Unicode 的支持(特殊字符)

之前JavaScript允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的Unicode码点。但是,这种表示法只限于码点在\u0000~\uFFFF之间的字符。超出这个范围的字符,必须用两个双字节的形式表示。

ES6对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符。

  • 一些列针对加强Unicode的api
    • charCodeAt方法,能够正确处理 4 个字节储存的字符,返回一个字符的码点。
    • fromCodePoint方法,ES6提供了String.fromCodePoint方法,可以识别大于0xFFFF的字符
    • at方法,可以识别 Unicode 编号大于0xFFFF的字符,返回正确的字符。

新增字符串api

  • includes():返回布尔值,表示是否找到了参数字符串。

第二个参数表示从第6位开始是否包含第一个参数的值

let s = 'Hello world!';
s.includes('o') // true
s.includes('Hello', 6) // false
  • startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。

第二个参数表示从第6位开始是否以第一个参数的值开头

let s = 'Hello world!';
s.startsWith('Hello') // true
s.startsWith('world', 6) // true
  • endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。

第二个参数表示前5位是否以第一个参数的值结束

let s = 'Hello world!';
s.endsWith('!') // true
s.endsWith('Hello', 5) // true
  • repeat():方法返回一个新字符串,表示将原字符串重复n次。
'x'.repeat(3) // "xxx"

模板字符串

大家比较熟悉,不赘述简单来说就是字符串中可以嵌入表达式,可以嵌套使用

const tmpl = addrs => `
  <table>
  ${addrs.map(addr => `
    <tr><td>${addr.first}</td></tr>
    <tr><td>${addr.last}</td></tr>
  `).join('')}
  </table>
`;
  • 模板字符串的本质

模板字符串解析器会将模板字符串通过${*}进行分割为一个数组(类似split方法)再按顺序计算${*}中的值返回一个数组,具体如下:

let a = 5;
let b = 10;
`Hello ${ a + b } world ${ a * b }`;
//`Hello ${ a + b } world ${ a * b }`会被分割为['Hello ',' world ','']的一个数组(数组中还有一个属性raw)
//分别计算${ a + b }和${ a * b }的值15,50
//然后返回['Hello ',' world ',''],15,50
  • String.raw()方法

上面我们了解了模板字符串的本质,但['Hello ',' world ',''],15,50如何被解析为字符串呢

let str = String.raw({raw:['Hello ',' world ','']},15,50);
console.log(str);//Hello 15 world 50

标签模板

不要被名字迷惑,标签模板其实就是以模板字符串方式执行方法

alert`123`;
// 等同于
alert([123]);

模板字符串的本质我们可以解释

let a = 5;
let b = 10;
console.log`Hello ${ a + b } world ${ a * b }`
// 相当于
// `Hello ${ a + b } world ${ a * b }`会被解析为['Hello ',' world ',''],15,50
console.log(['Hello ',' world ',''],15,50);

相关文章

  • es6的数值,函数,字符串扩展

    一、es6的数值扩展 二、es6的函数扩展 代码效果:对象解构在函数中的应用 三、es6字符串扩展 常用方法 代码...

  • ECMAScript6新方法(2)

    字符串扩展 ES6加强了对Unicode的支持,并且扩展了字符串对象。 获取字符unicode编码 通过unico...

  • ES6扩展归纳

    ES6扩展归纳 介绍ES6相比与ES5在原有对象上的扩展,包括字符串、正则、数值、函数、数组、对象等扩展,本文是阮...

  • 11.ES6字符串startsWith、endsWith和字符串

    在ES6中字符串扩展了startsWith、endsWith和字符串模板1、startsWith 开始是否包含2、...

  • ES6字符串扩展

    ES6字符串扩展 ES6加强了对 Unicode 的支持(特殊字符) 之前JavaScript允许采用\uxxxx...

  • ES6、ES7语法以及Vue模板语法

    ES6、ES7语法 字符串的扩展 includes(str) : 判断是否包含指定的字符串startsWith(s...

  • ES6入门之内置对象的扩展

    1.字符串的扩展 模板字符串。ES5写法: ES6写法: 新增字符串方法:1 repeat; //复制字符串2 i...

  • Typescript 特性

    Typescript是根据es6来扩展的js 的超集。 字符串的特性有: 多行字符串: 字符串模版 可以使用$+大...

  • 小巧玲珑-ES6之字符串的扩展

    ES6扩展了字符串对象。 一、操作字符串的一些方法 1、字符串的包含 传统上,JavaScript 只有index...

  • 第四章 字符串的扩展

    ES6增强了对Uniconde的支持并且扩展了字符串对象。 4..1字符串Unicode表示法 lavaScrip...

网友评论

    本文标题:ES6字符串扩展

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