標記字串
緊接在模板文字之前識別的函式用於解釋它,在所謂的標記模板文字中。標記函式可以返回一個字串,但它也可以返回任何其他型別的值。
標記函式 strings
的第一個引數是文字的每個常量部分的陣列。其餘引數 ...substitutions
包含每個 ${}
替換表示式的評估值。
function settings(strings, ...substitutions) {
const result = new Map();
for (let i = 0; i < substitutions.length; i++) {
result.set(strings[i].trim(), substitutions[i]);
}
return result;
}
const remoteConfiguration = settings`
label ${'Content'}
servers ${2 * 8 + 1}
hostname ${location.hostname}
`;
Map {"label" => "Content", "servers" => 17, "hostname" => "stackoverflow.com"}
strings
陣列有一個特殊的 .raw
屬性,它引用了模板文字的相同常量部分的並行陣列,但與原始碼中出現的完全相同,沒有替換任何反斜槓轉義。
function example(strings, ...substitutions) {
console.log('strings:', strings);
console.log('...substitutions:', substitutions);
}
example`Hello ${'world'}.\n\nHow are you?`;
strings: ["Hello ", ".\n\nHow are you?", raw: ["Hello ", ".\\n\\nHow are you?"]]
substitutions: ["world"]