1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 18:32:22 +00:00

docs(string): edit String.raw

This commit is contained in:
ruanyf 2018-01-24 15:08:15 +08:00
parent 0ce6129271
commit ee982c4314

View File

@ -865,32 +865,17 @@ ES6 还为原生的 String 对象,提供了一个`raw`方法。
```javascript ```javascript
String.raw`Hi\n${2+3}!`; String.raw`Hi\n${2+3}!`;
// "Hi\\n5!" // 返回 "Hi\\n5!"
String.raw`Hi\u000A!`; String.raw`Hi\u000A!`;
// 'Hi\\u000A!' // 返回 "Hi\\u000A!"
``` ```
如果原字符串的斜杠已经转义,那么`String.raw`不会做任何处理 如果原字符串的斜杠已经转义,那么`String.raw`会进行再次转义
```javascript ```javascript
String.raw`Hi\\n` String.raw`Hi\\n`
// "Hi\\n" // 返回 "Hi\\\\n"
```
`String.raw`的代码基本如下。
```javascript
String.raw = function (strings, ...values) {
let output = "";
let index;
for (index = 0; index < values.length; index++) {
output += strings.raw[index] + values[index];
}
output += strings.raw[index]
return output;
}
``` ```
`String.raw`方法可以作为处理模板字符串的基本方法,它会将所有变量替换,而且对斜杠进行转义,方便下一步作为字符串来使用。 `String.raw`方法可以作为处理模板字符串的基本方法,它会将所有变量替换,而且对斜杠进行转义,方便下一步作为字符串来使用。
@ -905,6 +890,21 @@ String.raw({ raw: 'test' }, 0, 1, 2);
String.raw({ raw: ['t','e','s','t'] }, 0, 1, 2); String.raw({ raw: ['t','e','s','t'] }, 0, 1, 2);
``` ```
作为函数,`String.raw`的代码实现基本如下。
```javascript
String.raw = function (strings, ...values) {
let output = '';
let index;
for (index = 0; index < values.length; index++) {
output += strings.raw[index] + values[index];
}
output += strings.raw[index]
return output;
}
```
## 模板字符串的限制 ## 模板字符串的限制
前面提到标签模板里面,可以内嵌其他语言。但是,模板字符串默认会将字符串转义,导致无法嵌入其他语言。 前面提到标签模板里面,可以内嵌其他语言。但是,模板字符串默认会将字符串转义,导致无法嵌入其他语言。