JavaScript 中的反引號:函數呼叫還是字串標記?
在 JavaScript 中使用反引號 (...) 時,您可能會遇到意外行為,例如在反引號內使用單一參數執行 console.log時:
console.log`1`;
產生輸出例如:
console.log`1` VM12380:2 ["1", raw: Array[1]]
理解標記模板
這種行為源於ES6 中引入的模板
...值:嵌入字串文字中的值陣列
函數呼叫與函數呼叫標記
對於有反引號的console.log,反引號不會呼叫函數。相反,他們使用 console.log 函數標記字串文字「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中文網其他相關文章!