javascript模板字串是什麼

2022-02-08 16:00:15

模板字串是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其它相關文章!