模板字符串-不要随便换行、缩进

定义

模板字符串使用反引号 (``) 来代替普通字符串中的用双引号和单引号.
模板字符串可以包含特定语法(${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`;
}

MDN参考文档

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容