Это помеченные литералы шаблона .Часть перед рюкзаками является ссылкой на функцию, которая будет вызываться для обработки строки.
Функция передает переменные (части ${}
) в качестве аргументов, а также фрагменты строки, которые окружают переменные, разбитые в массив.Возвращаемое значение функции становится значением шаблона.Из-за этого очень обобщенного формата вы можете делать с функцией почти все что угодно.Вот быстрый и грязный пример, который берет переменные (собранные в массив для удобства), переводит их в верхний регистр и помещает обратно в строку:
function upperV(strings, ...vars) {
/* make vars uppercase */
console.log("vars: ", vars) // an array of the passed in variables
console.log("strings:", strings) // the string parts
// put them together
return vars.reduce((str, v, i) => str + v.toUpperCase() + strings[i+1], strings[0]);
}
let adverb = "boldly"
let output = upperV`to ${adverb} split infinitives that no ${'man'} had split before...`;
console.log(output)