mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 18:32:22 +00:00
docs(string): edit template string
This commit is contained in:
parent
3e4fad616e
commit
696e6a7b1b
@ -906,9 +906,9 @@ String.raw({ raw: ['t','e','s','t'] }, 0, 1, 2);
|
||||
|
||||
## 模板字符串的限制
|
||||
|
||||
前面提到标签模板里面,可以内嵌其他语言。但是,模板字符串默认会将字符串转义,因此导致了无法嵌入其他语言。
|
||||
前面提到标签模板里面,可以内嵌其他语言。但是,模板字符串默认会将字符串转义,导致无法嵌入其他语言。
|
||||
|
||||
举例来说,在标签模板里面可以嵌入Latex语言。
|
||||
举例来说,标签模板里面可以嵌入 LaTEX 语言。
|
||||
|
||||
```javascript
|
||||
function latex(strings) {
|
||||
@ -924,9 +924,9 @@ Breve over the h goes \u{h}ere // 报错
|
||||
`
|
||||
```
|
||||
|
||||
上面代码中,变量`document`内嵌的模板字符串,对于Latex语言来说完全是合法的,但是JavaScript引擎会报错。原因就在于字符串的转义。
|
||||
上面代码中,变量`document`内嵌的模板字符串,对于 LaTEX 语言来说完全是合法的,但是 JavaScript 引擎会报错。原因就在于字符串的转义。
|
||||
|
||||
模板字符串会将`\u00FF`和`\u{42}`当作Unicode字符进行转义,所以`\unicode`解析时报错;而`\x56`会被当作十六进制字符串转义,所以`\xerxes`会报错。
|
||||
模板字符串会将`\u00FF`和`\u{42}`当作 Unicode 字符进行转义,所以`\unicode`解析时报错;而`\x56`会被当作十六进制字符串转义,所以`\xerxes`会报错。也就是说,`\u`和`\x`在 LaTEX 里面有特殊含义,但是 JavaScript 将它们转义了。
|
||||
|
||||
为了解决这个问题,现在有一个[提案](https://tc39.github.io/proposal-template-literal-revision/),放松对标签模板里面的字符串转义的限制。如果遇到不合法的字符串转义,就返回`undefined`,而不是报错,并且从`raw`属性上面可以得到原始字符串。
|
||||
|
||||
@ -945,3 +945,4 @@ tag`\unicode and \u{55}`
|
||||
```javascript
|
||||
let bad = `bad escape sequence: \unicode`; // 报错
|
||||
```
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user