JavaScript 模板字符串高级用法:插值、标签函数与多行处理

小石头
小石头
发布时间:2026-10-15 | 4人浏览过
原创

JavaScript 模板字符串是 ES6 引入的重要特性,它使用反引号定义,支持变量插值、多行文本和标签函数。相比传统的字符串拼接,它能显著提升代码可读性并简化复杂内容的生成过程。

什么是模板字符串

模板字符串(Template Literals)允许在字符串中嵌入表达式,同时原生支持多行字符串显示和字符串插值功能。其最显著的特征是使用反引号 ` 作为定界符,而非传统的单引号或双引号。

let str = `这是一个模板字符串`;
console.log(str); // 输出: 这是一个模板字符串

基础用法:格式化与插值

第 1 步:保持原始格式

普通字符串在定义时会忽略换行和空格,而模板字符串会原样保留代码中的缩进、换行和空格。这使得定义多段文本时更加直观。

const formatText = `
第一      行
第二行
	第三行
`;
console.log(formatText);

第 2 步:进行字符串插值

字符串插值是模板字符串的核心功能,允许将 JS 表达式的结果直接插入字符串中。语法为 ${expression},其中可以放入变量、计算式甚至函数调用。

let name = 'XiXiHaHa', age = 18;
let sayHello = `Hello! My name is ${name}.
My age is ${age}.`;
console.log(sayHello);

高级用法:标签函数

标签函数(Tagged Templates)允许开发者自定义模板字符串的处理逻辑。当调用 tag(stringArray, ...values) 时:

  • 第一个参数:是一个包含所有静态字符串片段的数组(由 ${} 分割得到)。
  • 后续参数:依次对应每个 ${} 中计算出的表达式值。

理解标签函数的最佳方式是查看一个简单的求和示例:

let a = 1, b = 2;
function addSum(strings, aVal, bVal, abSum) {
    console.log('静态字符串:', strings);
    console.log('a 的值:', aVal);
    console.log('b 的值:', bVal);
    console.log('表达式结果:', abSum);
}
addSum`${a} + ${b} = ${a + b}`;

第 1 步:使用剩余参数处理动态数量

当插值数量不确定时,可以使用剩余参数 ...val 来收集所有变量值,从而构建更通用的解析器:

function addSum(strings, ...val) {
    return strings[0] + 
    val.map((e, i) => `${e}${strings[i + 1]}`).join('');
}

let result = addSum`${1} + ${2} = ${1 + 2}`;
console.log(result); // 输出: 1 + 2 = 3

实战应用:HTML 与 URL 拼接

在实际项目中(如 Vue.js),模板字符串常被用于拼接图片 URL 或生成 DOM 结构。

1. HTML 属性拼接

利用预定义的地址前缀,动态拼接资源路径:

<img :src="$oss.basicAddress + '/' + businessorgData.idCardUrl1" />

2. JS 数据对象初始化

在组件的 data 或配置项中直接内联完整路径:

const fileItem = {
  url: `${this.$oss.basicAddress}/FrIkEw2UlgTxcmNKjt7FxywVT-W4`
};

3. 批量生成 DOM 节点

使用 .html() 方法一次性渲染复杂的嵌套 HTML,此时务必注意首尾缩进问题。若需去除多行字符串自带的多余空白,可结合 .trim() 使用:

$('#list').html(`
  <div id=sm_shop_tp> 
    <p>商家名字:<span>XXX</span></p> 
  </div>
`.trim());

总结

以上就是对 JavaScript 模板字符串的详细使用方法解析,涵盖了从基础的插值到高级标签函数的应用场景,更多关于 JavaScript 模板字符串的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表