Skip to content

Commit ee982c4

Browse files
committed
docs(string): edit String.raw
1 parent 0ce6129 commit ee982c4

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

docs/string.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -865,24 +865,36 @@ ES6 还为原生的 String 对象,提供了一个`raw`方法。
865865

866866
```javascript
867867
String.raw`Hi\n${2+3}!`;
868-
// "Hi\\n5!"
868+
// 返回 "Hi\\n5!"
869869

870870
String.raw`Hi\u000A!`;
871-
// 'Hi\\u000A!'
871+
// 返回 "Hi\\u000A!"
872872
```
873873

874-
如果原字符串的斜杠已经转义,那么`String.raw`不会做任何处理
874+
如果原字符串的斜杠已经转义,那么`String.raw`会进行再次转义
875875

876876
```javascript
877877
String.raw`Hi\\n`
878-
// "Hi\\n"
878+
// 返回 "Hi\\\\n"
879879
```
880880

881-
`String.raw`的代码基本如下。
881+
`String.raw`方法可以作为处理模板字符串的基本方法,它会将所有变量替换,而且对斜杠进行转义,方便下一步作为字符串来使用。
882+
883+
`String.raw`方法也可以作为正常的函数使用。这时,它的第一个参数,应该是一个具有`raw`属性的对象,且`raw`属性的值应该是一个数组。
884+
885+
```javascript
886+
String.raw({ raw: 'test' }, 0, 1, 2);
887+
// 't0e1s2t'
888+
889+
// 等同于
890+
String.raw({ raw: ['t','e','s','t'] }, 0, 1, 2);
891+
```
892+
893+
作为函数,`String.raw`的代码实现基本如下。
882894

883895
```javascript
884896
String.raw = function (strings, ...values) {
885-
let output = "";
897+
let output = '';
886898
let index;
887899
for (index = 0; index < values.length; index++) {
888900
output += strings.raw[index] + values[index];
@@ -893,18 +905,6 @@ String.raw = function (strings, ...values) {
893905
}
894906
```
895907

896-
`String.raw`方法可以作为处理模板字符串的基本方法,它会将所有变量替换,而且对斜杠进行转义,方便下一步作为字符串来使用。
897-
898-
`String.raw`方法也可以作为正常的函数使用。这时,它的第一个参数,应该是一个具有`raw`属性的对象,且`raw`属性的值应该是一个数组。
899-
900-
```javascript
901-
String.raw({ raw: 'test' }, 0, 1, 2);
902-
// 't0e1s2t'
903-
904-
// 等同于
905-
String.raw({ raw: ['t','e','s','t'] }, 0, 1, 2);
906-
```
907-
908908
## 模板字符串的限制
909909

910910
前面提到标签模板里面,可以内嵌其他语言。但是,模板字符串默认会将字符串转义,导致无法嵌入其他语言。

0 commit comments

Comments
 (0)