最近在專案中使用了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. 當然,模版字串可以引入變量,不使用變數也是可以的。如下圖:
` I am a man.`
` No matter what you do,
I trust you.`
3. 我們也可以先定義變量,然後在模版字串中嵌入變數:
var name="zzw"; ` ${name},no matter what you do, I trust you.`
4. 顯然,由於反引號是模版字串的標識,如果我們需要在字串中使用反引號,我們就需要對其進行轉義,如下所示:
`No matter` what you do,
I trust you.`
5.注意:如果使用模版字串表示多行字串,所有的空格和縮排都會被保存在輸出中! !
console.log( `No matter` what you do, I trust you.`);
輸出結果如下:
6. 在${}中的大括號裡可以放入任意的JavaScript表達式,還可以進行運算,以及引用物件屬性。
var x=88; var y=100; console.log(`x=${++x},y=${x+y}`);
結果如下:
7.更強大的是:模版字串還可以呼叫函數:
function string(){ return "zzw likes es6!"; } console.log(`你想說什麼?嗯,${string()}`);
結果如下圖:
另外,如果函數的結果不是字串,那麼,將依照一般的規則轉換成字串:
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"));
結果如下: