首頁 >web前端 >前端問答 >javascript模板字串是什麼

javascript模板字串是什麼

青灯夜游
青灯夜游原創
2022-02-08 15:38:332580瀏覽

模板字串是ES6中引入了一種新的允許嵌入表達式的字串字面量,是一種增強版的字串,它使用反引號來代替普通字串中的用雙引號和單引號。透過使用模板字面量,可以在字串中同時使用單引號和雙引號。

javascript模板字串是什麼

本教學操作環境: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學習教學

以上是javascript模板字串是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn