前面我們提到了加號運算子除了可以加總不同的值之外,也可以用來連接字串,例如:
const catName = "Luna";
const birthYear = 2019;
const color = "black";
const year = 2022;
const catInfo = catName + " is a " + (year - birthYear) + " years old " + color + " cat.";
console.log(catInfo);
// Luna is a 3 years old black cat.
但這個方式使用起來會有一些不方便的地方,像是要非常注意引號裡面是否有將空格加入在它應該出現的位置,否則就會變成一大串連在一起的字母,如稍不注意,可能會變成這樣:Lunais a3years oldblackcat。
還有一種情形是當句子中間出現單引號,像是Amy’s這樣的情形時,需特別注意單引號及雙引號的使用,舉例來說,”Amy’s cat”是ok的,但’Amy’s cat’就不行。
這時候我們可以使用模板字串(template literals),這是從ES6開始被引入的工具,這讓我們可以用一種更普通、更容易的方式編寫字串,然後將變數直接插入到字串當中,最後將它們組裝成一串文字。
撰寫的方式是使用反引號及${ },要插入在句子中的變數就放在${ }裡面,${ }裡面也可以做值的運算,例如:
const catName = "Luna";
const birthYear = 2019;
const color = "black";
const year = 2022;
const catInfo = `${catName} is a ${year - birthYear} years old ${color} cat.`;
console.log(catInfo);
// Luna is a 3 years old black cat.
這樣的語法撰寫起來比較容易,因為它更貼近我們日常生活中的書寫方式。
反引號可以使用於任何的字串,因此許多人開始會在字串上使用反引號取代雙引號或單引號,因為這樣就無須煩惱該使用哪一種引號了。
模板字串另一個好用的地方是創造多行字串,在模板字串被引入前,如果要撰寫像下列的多行字串時
Line one
Line two
Line three
需要使用\n\來分行,
console.log("Line one \n\
Line two \n\
Line three");
而模板字串讓撰寫多行字串變得簡單多了:
console.log(`Line one
Line two
Line three`);