面试题答案
一键面试JavaScript模板标签是什么
模板标签(Template literals tags)是JavaScript中模板字符串(Template literals)的高级用法。模板字符串是一种允许嵌入表达式的字符串字面量,而模板标签是紧跟在模板字符串前的函数调用。这个函数会接收到模板字符串解析后的参数,从而让开发者可以自定义处理模板字符串的方式。
如何使用
以下是一个简单的示例:
function tagFunction(strings, ...values) {
let result = '';
for (let i = 0; i < strings.length; i++) {
result += strings[i];
if (i < values.length) {
result += values[i];
}
}
return result;
}
const name = 'John';
const age = 30;
const result = tagFunction`My name is ${name} and I am ${age} years old.`;
console.log(result);
// 输出: My name is John and I am 30 years old.
在上述代码中,tagFunction
就是模板标签函数,strings
数组包含了模板字符串中表达式之间的文本,...values
是一个包含了模板字符串中表达式求值结果的数组。
简单的性能优化方式
在模板标签函数中,如果模板字符串内容不会动态改变(即表达式的结果总是相同),可以缓存模板标签函数的处理结果。这样在多次调用模板标签时,若传入相同的表达式值,就无需重复处理。例如:
const cache = new Map();
function tagFunction(strings, ...values) {
const key = values.join('-');
if (cache.has(key)) {
return cache.get(key);
}
let result = '';
for (let i = 0; i < strings.length; i++) {
result += strings[i];
if (i < values.length) {
result += values[i];
}
}
cache.set(key, result);
return result;
}
通过这种方式,当 tagFunction
接收到相同的 values
时,会直接从缓存中获取结果,提高了性能。