最近在項目中使用了ES6的模版字元串,在這裡加以總結。
1.之前我們也可以使用JavaScript輸出模版字元串,通常是下面這樣的:
$("#result").append(
"He is <b>"+person.name+"</b>"+"and we wish to know his"+person.age+".That is all"
);
但是我們可以看到:這樣的傳統做法需要使用大量的“”(雙引号)和 + 來拼接才能得到我們需要的模版。但是這樣是十分不友善的。
于是ES6中提供了模版字元串,用`(反引号)辨別,用${}将變量括起來。上面的例子可以用模版字元串寫成下面這樣:
$("#result").append(
`He is <b>${person.name}</b>and we wish to know his${person.age}.that is all`
);
這樣的做法就簡潔了很多,我們不需要再使用大量的""和+來拼接字元串和變量。
2. 當然,模版字元串可以引入變量,不使用變量也是可以的。如下所示:
|
3. 我們還可以先定義變量,然後在模版字元串中嵌入變量:
|
4.顯然,由于反引号是模版字元串的辨別,如果我們需要在字元串中使用反引号,我們就需要對其進行轉義,如下所示:
`No matter\` what you do,
I trust you.`
5.注意:如果使用模版字元串表示多行字元串,所有的空格和縮進都會被儲存在輸出
|
輸出結果如下:

6. 在${}中的大括号裡可以放入任意的JavaScript表達式,還可以進行運算,以及引用對象屬性。
var x=88;
var y=100;
console.log(`x=${++x},y=${x+y}`);
結果如下所示:
7.更強大的是:模版字元串還可以調用函數:
|
結果如下所示:
另外,如果函數的結果不是字元串,那麼,将按照一般的規則轉化為字元串:
function string(){
return 666;
}
console.log(`你想說什麼?
嗯,${string()}`);
結果如下所示:
在這裡,實際上數字666被轉化成了字元串666.
8.如果在${}中的變量時沒有命名的,那麼會報錯:
console.log(`你想說什麼? 嗯,${string()}`);
在上面這句代碼中,string()函數沒有聲明,于是報錯:
9.其實,我們還可以在${}中輸入一個字元串,知識結果仍舊會傳回一個字元串:
console.log(`你想說什麼?
嗯,${"其實我不是變量~"}`);
結果如下所示:
10.如果希望引用模版字元串本身,可以像下面這樣寫:
let str="return"+"`Hello! ${name}`";
let func=new Function("name",str);
console.log(func("zzw"));
結果如下: