首頁  >  文章  >  web前端  >  JavaScript 反引號:字串內插還是標記模板函數?

JavaScript 反引號:字串內插還是標記模板函數?

Barbara Streisand
Barbara Streisand原創
2024-11-22 06:34:181021瀏覽

JavaScript Backticks: String Interpolation or Tagged Template Function?

JavaScript 中的反引號:函數呼叫還是字串標記?

在 JavaScript 中使用反引號 (...) 時,您可能會遇到意外行為,例如在反引號內使用單一參數執行 console.log時:

console.log`1`;

產生輸出例如:

console.log`1`
VM12380:2 ["1", raw: Array[1]]

理解標記模板

這種行為源於ES6 中引入的模板

  • 這種行為源於ES6 中引入的標記模板的概念。標記模板是可以與反引號一起使用來操作字串文字的函數。當呼叫標記範本時,它會收到兩個參數:
  • 字串:字串文字陣列

...值:嵌入字串文字中的值陣列

函數呼叫與函數呼叫標記

對於有反引號的console.log,反引號不會呼叫函數。相反,他們使用 console.log 函數標記字串文字「1」。產生的標記模板函數傳回一個包含轉換值的陣列。
  • 具體來說:
  • strings[0] 包含字串文字:「1」
  • strings[ 1] 未定義
  • values [0] 包含嵌入值: 1

raw 包含未轉換的字串文字: ["1"]

轉譯

var _taggedTemplateLiteralLoose = function (strings, raw) { strings.raw = raw; return strings; };

console.log(_taggedTemplateLiteralLoose(["1"], ["1"]));

現代瀏覽器轉譯 ES6 程式碼使其相容於使用較舊的 JavaScript 版本。在這種情況下,標記模板函數將轉換為常規函數呼叫:

_taggedTemplateLiteralLoose 函數傳回一個數組,該數組將傳遞給 console.log 函數,該函數將列印該數組。

結論

JavaScript 中的反引號可以用於兩者字串插值和標記範本。當與標記模板函數一起使用時,該函數接收字串文字和嵌入值的解析值,從而在輸出資料之前能夠對資料進行操作和轉換。

以上是JavaScript 反引號:字串內插還是標記模板函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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