模板字串是ES6中引入了一種新的允許嵌入表示式的字串字面量,是一種增強版的字串,它使用反引號來代替普通字串中的用雙引號和單引號。通過使用模板字面量,可以在字串中同時使用單引號和雙引號。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
模板字面量 是允許嵌入表示式的字串字面量,是ES6 中引入了一種新的字串字面量。你可以使用多行字串和字串插值功能。它們在ES2015規範的先前版本中被稱為「模板字串」。
模板字串使用反引號 (` `) 來代替普通字串中的用雙引號和單引號。模板字串可以包含特定語法(${expression})的預留位置。預留位置中的表示式和周圍的文字會一起傳遞給一個預設函數,該函數負責將所有的部分連線起來,如果一個模板字串由表示式開頭,則該字串被稱為帶標籤的模板字串,該表示式通常是一個函數,它會在模板字串處理後被呼叫,在輸出最終結果前,你都可以通過該函數來對模板字串進行操作處理。在模版字串內使用反引號(`)時,需要在它前面加跳脫符(\)。
`\`` === "`" // --> true
模板字串可以當作普通字串使用,也可以用來定義多行字串,或者在字串中嵌入變數。
普通用法如下所示:
// 使用 ` 符號包裹的字串稱為模板字串 let str = `this is str` console.log(typeof str, str); //string this is str
多行模板字串
ECMAScript 2015提供的模板字串與普通字串的不同的是模板字串中的空格、縮排、換行都會被保留。
範例程式碼如下所指示:
let str = `this is str` console.log(typeof str, str); /* string this is str */
1、帶表示式的模板字串
模板字串是支援嵌入表示式的,語法結構如下所示:
`${expression}`
範例程式碼如下所示:
let str1 = `this is str1` let str2 = `this is str2` // 只需要將表示式寫入 ${} 中 let and = `${str1} and ${str2}` console.log(and); // this is str1 and this is str2
帶標籤的模板字串
模板字串的功能,不僅僅是上面這些。它可以緊跟在一個函數名後面,該函數將被呼叫來處理這個模板字串。這被稱為標籤模板 功能(tagged template )。
let str = 'str' console.log`this is ${str}`; // 等同於 console.log(['this is ', ''], str);
標籤模板其實不是模板,而是函數呼叫的一種特殊形式。「標籤」指的就是函數,緊跟在後面的模板字串就是它的引數。
原始字串
在標籤函數的第一個引數中,存在一個特殊的屬性raw,可以通過它來存取模板字串的原始字串,而不是經過特殊替換的字元。
範例程式碼如下所示:
/* 原始字串 應用在帶標籤的模板字串中 * 在函數的第一個引數中存在 raw 屬性,該屬性可以獲取字串的原始字串。 * 所謂的原始字串,指的是模板字串被定義時的內容,而不是處理之後的內容 */ function tag(string) { console.log(string.raw[0]); } tag `string test line1 \n string test line2` // string test line1 \n string test line2
另外,使用String.raw()方法出功能鍵原始字串和預設模板函數和字串連線建立是一樣的。
範例程式碼如下所示:
let str = String.raw `Hi\n${2+3}!`; // ,Hi 後面的字元不是換行符,\ 和 n 是兩個不同的字元 console.log(str); // Hi\n5!
判斷是否包含某字串
1、includes()方法
includes()方法用於判斷一個字串是否包含在另一個字串中,根據判斷結果返回true或false。
語法結構如下所示:
str.includes(searchString[, position])
引數說明:
searchString:要在此字串中搜尋的字串。
position:(可選) 從當前字串的哪個索引位置開始搜尋子字串,預設值為 0。
值得注意的是includes()方法是區分大小寫的。
範例程式碼如下所示:
let str = 'abcdef'; console.log(str.includes('c')); // true console.log(str.includes('d')); // true console.log(str.includes('z')); // false console.log(str.includes('A')); // false
ECMAScript 2015提供的這個includes()方法是區分大小寫的,現在我們自己擴充套件一個不區分大小寫的,
範例程式碼如下所示:
String.prototype.MyIncludes = function (searchStr, index = 0) { // 將需要判斷的字串全部改成小寫形式 let str = this.toLowerCase() // 將傳入的字串改成小寫形式 searchStr = searchStr.toLowerCase(); return str.includes(searchStr, index) } let str = 'abcdef'; console.log(str.MyIncludes('c')); // true console.log(str.MyIncludes('d')); // true console.log(str.MyIncludes('z')); // false console.log(str.MyIncludes('A')); // true
2、startsWith()方法
startsWith()方法用來判斷當前字串是否以另外一個給定的子字串開頭,並根據判斷結果返回true 或false。
語法結構如下所示:
str.startsWith(searchString[, position])
引數說明:
searchString:要在此字串中搜尋的字串。
position:(可選) 從當前字串的哪個索引位置開始搜尋子字串,預設值為 0。
值得注意的是startsWith()方法是區分大小寫的。
範例程式碼如下所示:
let str = 'abcdef'; /* * startsWith() 方法用來判斷當前字串是否以另外一個給定的子字串開頭, 並根據判斷結果返回 true 或 false。 * str.startsWith(searchString[, position]) 引數說明 searchString: 要在此字串中搜尋的字串。 position: (可選) 從當前字串的哪個索引位置開始搜尋子字串, 預設值為 0。 !值得注意的是startsWith() 方法是區分大小寫的。 */ console.log(str.startsWith('a')); // true console.log(str.startsWith('c', 2)); // true console.log(str.startsWith('c')); // flase
3、endsWith()方法
endsWith()方法用來判斷當前字串是否是以另外一個給定的子字串「結尾」的,根據判斷結果返回 true 或 false。
語法結構如下所示:
str.endsWith(searchString[, position])
引數說明:
searchString:要在此字串中搜尋的字串。
position:(可選) 從當前字串的哪個索引位置開始搜尋子字串,預設值為0。
值得注意的是endsWith()方法是區分大小寫的。
範例程式碼如下所示:
let str = 'abcdef'; console.log(str.endsWith('f')); // true console.log(str.endsWith('c', 3)); // true console.log(str.endsWith('c')); // flase
以下這兩個方法通過可以自己擴充套件一個不區分大小寫的。
【相關推薦:】
以上就是javascript模板字串是什麼的詳細內容,更多請關注TW511.COM其它相關文章!