定義
模板字符串使用反引號 (``) 來代替普通字符串中的用雙引號和單引號.
模板字符串可以包含特定語法(${expression})的占位符。
使用例子
`string text`
// 支持多行字符串
`string text line 1
string text line 2`
// 支持插入表達(dá)式
`string text ${expression} string text`
在使用多行字符串的時(shí)候,很容易掉進(jìn)一個(gè)坑驴一。我們敲代碼的時(shí)候習(xí)慣性的縮進(jìn),在模板字符串里面縮進(jìn)符也是模板字符串中的一部分灶壶。
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`;
}
上面的函數(shù)看起來是不是沒問題肝断,整整齊齊的。但是因?yàn)槲蚁胱龅氖悄M一個(gè)HTTP協(xié)議(真正的寫法是有表達(dá)式的),結(jié)果發(fā)送出去服務(wù)器端接收出問題胸懈。開始我一直以為我服務(wù)器端代碼寫錯(cuò)了担扑。檢查了很久之后,把這段東西直接打印出來趣钱,發(fā)現(xiàn)好像不太一樣~~
\\ 打印出來的結(jié)果是這樣的
"POST / HTTP/1.1
X-Foo2: customed
Content-Type: application/x-www-form-urlencoded
Content-Length: 11
name = client1"
\\ 如果不用模板字符串涌献,用普通的雙引號,結(jié)果是這樣的
"POST / HTTP/1.1
X-Foo2: customed
Content-Type: application/x-www-form-urlencoded
Content-Length: 11
name = client1"
用模板字符串會(huì)羔挡,打印出來的結(jié)果會(huì)有縮進(jìn)洁奈。
MDN中有定義:
在新行中插入的任何字符都是模板字符串中的一部分.
所以间唉,如果你的函數(shù)的理想結(jié)果是會(huì)對縮進(jìn)绞灼、換行等字符敏感的,使用模板字符串的時(shí)候呈野,小心不要根據(jù)平時(shí)習(xí)慣來寫低矮。
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`;
}