定义
模板字符串使用反引号 (``) 来代替普通字符串中的用双引号和单引号.
模板字符串可以包含特定语法(${expression})的占位符。
使用例子
`string text`
// 支持多行字符串
`string text line 1
string text line 2`
// 支持插入表达式
`string text ${expression} string text`
在使用多行字符串的时候,很容易掉进一个坑。我们敲代码的时候习惯性的缩进,在模板字符串里面缩进符也是模板字符串中的一部分。
function toString() {
return `POST / HTTP/1.1\r
X-Foo2: customed\r
Content-Type: application/x-www-form-urlencoded\r
Content-Length: 11\r
\r
name = client1`;
}
上面的函数看起来是不是没问题,整整齐齐的。但是因为我想做的是模拟一个HTTP协议(真正的写法是有表达式的),结果发送出去服务器端接收出问题。开始我一直以为我服务器端代码写错了。检查了很久之后,把这段东西直接打印出来,发现好像不太一样~~
\\ 打印出来的结果是这样的
"POST / HTTP/1.1
X-Foo2: customed
Content-Type: application/x-www-form-urlencoded
Content-Length: 11
name = client1"
\\ 如果不用模板字符串,用普通的双引号,结果是这样的
"POST / HTTP/1.1
X-Foo2: customed
Content-Type: application/x-www-form-urlencoded
Content-Length: 11
name = client1"
用模板字符串会,打印出来的结果会有缩进。
MDN中有定义:
在新行中插入的任何字符都是模板字符串中的一部分.
所以,如果你的函数的理想结果是会对缩进、换行等字符敏感的,使用模板字符串的时候,小心不要根据平时习惯来写。
function toString() {
return `POST / HTTP/1.1\r
X-Foo2: customed\r
Content-Type: application/x-www-form-urlencoded\r
Content-Length: 11\r
\r
name = client1`;
}
网友评论