模板字符串-不要隨便換行、縮進(jìn)

定義

模板字符串使用反引號(hào) (``) 來代替普通字符串中的用雙引號(hào)和單引號(hào).
模板字符串可以包含特定語法(${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"

\\ 如果不用模板字符串,用普通的雙引號(hào),結(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ì)對(duì)縮進(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`;
}

MDN參考文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容