JavaScript 模板字符串:让字符串拼接变得更优雅

news2024/9/17 7:20:50

在 JavaScript 开发中,字符串拼接是一个常见的需求。从简单的用户界面文本生成到复杂的动态数据格式化,字符串操作无处不在。传统的字符串拼接方法虽然功能强大,但往往显得冗长且难以阅读。为了解决这一问题,ES6(ECMAScript 2015)引入了一种新的字符串字面量——模板字符串(Template Literals),它提供了一种更为直观和简洁的方式来创建和使用字符串。

基础用法

模板字符串允许你在字符串中嵌入表达式。它使用反引号 ( ) 而不是单引号或双引号,并且可以使用 ${} 语法在字符串中插入变量或表达式的值。

示例代码:
const name = "Alice";
const greeting = `Hello, ${name}!`;
console.log(greeting); // 输出: Hello, Alice!

在这个例子中,${name} 是一个占位符,会被变量 name 的值替换。

多行字符串

传统的字符串字面量在换行时会将换行符视为字符串的一部分,这在编写多行文本时可能会很麻烦。模板字符串则允许你在字符串中直接换行,使得多行文本的书写更加自然。

示例代码:
const message = `
Dear ${name},
    Your account has been successfully created.
Best regards,
The Team
`;
console.log(message);

这段代码将输出一个格式化的多行字符串,其中包含了换行和缩进。

字符串插值

除了基本的变量插入,模板字符串还支持更复杂的表达式,包括函数调用、算术运算等。

示例代码:
const year = new Date().getFullYear();
const age = 28;
const birthday = `Happy ${age === 30 ? '30th' : 'Birthday'} in the year ${year}!`;
console.log(birthday);

这里使用了条件运算符来决定插入的文本,同时利用 new Date().getFullYear() 获取当前年份。

标签模板:高亮关键词

假设我们想要创建一个函数,当我们在字符串中提到某个关键词时,它能够自动将其高亮显示。例如,如果我们提到了“JavaScript”,我们希望它被 <strong> 标签包围,使其在网页上加粗显示。

示例代码:
<p id="demo"></p>
// 定义一个标签函数,用于高亮显示关键词
function highlightKeyword(strings, ...values) {
    const keyword = "JavaScript"; // 我们想要高亮的关键词
    let result = "";

    for (let i = 0; i < strings.length; i++) {
        result += strings[i];
        if (i < values.length && values[i].includes(keyword)) {
            result += values[i].replace(new RegExp(keyword, 'g'), `<strong>${keyword}</strong>`);
        }
    }

    return result;
}

// 使用模板字符串和标签函数
const text = "JavaScript is one of the most popular programming languages. It's used for both client-side and server-side web development.";
const highlightedText = highlightKeyword`This is about ${text}`;

document.getElementById("demo").innerHTML=highlightedText;

在这里插入图片描述

在这个示例中,highlightKeyword 函数遍历模板字符串的所有部分和传递给它的值。如果任何值中包含关键词 “JavaScript”,它就会被 <strong> 标签包裹,从而在 HTML 渲染时以加粗的形式显示。

总结一下

模板字符串是 ES6 引入的一个非常实用的功能,它简化了字符串拼接的过程,提高了代码的可读性和维护性。无论是简单的变量插入还是复杂的表达式计算,模板字符串都能以一种优雅的方式完成任务。对于现代 JavaScript 开发者而言,掌握模板字符串的使用是提高编码效率的关键之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1937625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

职升网:监理工程师题型都是选择题吗?

监理工程师考试科目包含的题型主要有单项选择题、多项选择题以及案例分析题三种。其中《建设工程监理基本理论和相关法规》、《建设工程合同管理》、《建设工程目标控制》三科只有选择题题型&#xff0c;而《建设工程监理案例分析》只有案例分析题。 监理工程师各科目考试题型 …

系统架构设计师教程(清华第二版) 第3章 信息系统基础知识-3.2 业务处理系统-解读

教材中,一会儿“业务处理系统”,一会儿“事务处理系统”,语法毛病一堆。真是清华的水平!!! 系统架构设计师教程 第3章 信息系统基础知识-3.2 业务处理系统 3.2.1 业务处理系统的概念3.2.2 业务处理系统的功能3.2.2.1 数据输入3.2.2.2 数据处理3.2.2.2.1 批处理 (Batch …

C++——继承和多态

1.继承 1.1 继承的概念 在过往的文章中介绍过Java的继承&#xff0c;我们这里比较学习C的继承。 继承是出现是基于对代码复用的需求&#xff0c;在我们写代码时&#xff0c;会发现两个类之间存在大量的代码重复的情况&#xff0c;这个时候继承就排上了用场。继承可以在保持原有…

在 PostgreSQL 中如何实现数据的加密存储?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 中如何实现数据的加密存储&#xff1f;一、为什么要进行数据加密存储&#xff1f;二、P…

【Django】网上蛋糕商城后台-订单管理

概念 前面通过多篇文章以完全实现了用户在网上蛋糕商城平台上的所有功能和操作&#xff0c;从本文开始&#xff0c;实现网站的后台管理功能的介绍和操作。 导入静态资源 在static文件夹下&#xff0c;创建admin文件夹&#xff0c;在该文件夹下导入静态资源 在templates文件夹…

Nginx(详解以及如何使用)

目录 1. 什么是Nginx&#xff1f; 2. 为什么使用nginx? 3. 安装nginx 3.1 安装nginx的依赖插件 3.2 下载nginx 3.3 创建一个目录作为nginx的安装路径 3.4 解压 3.5 进入解压后的目录 3.6 指定nginx的安装路径 3.7 编译和安装nginx 3.8 启动nginx 3.9 访问nginx 4. ngin…

Python PDF Magic:合并和拆分随心所欲

大家好&#xff01;小编今天要为大家带来一篇关于Python操作PDF的秘籍——无论是要将PDF合并成一份整体&#xff0c;还是将一个庞大的PDF文件拆分成多个小伙伴&#xff0c;都轻松hold住&#xff01;你准备好了吗&#xff1f;让我们开始这场奇妙的PDF操作之旅吧&#xff01; 准…

Kubernetes 1.24 版弃用 Dockershim 后如何迁移到 containerd 和 CRI-O

在本系列的上一篇文章中&#xff0c;我们讨论了什么是 CRI 和 OCI&#xff0c;Docker、containerd、CRI-O 之间的区别以及它们的架构等。最近&#xff0c;我们得知 Docker 即将从 kubernetes 中弃用&#xff01;&#xff08;查看 kubernetes 官方的这篇文章&#xff09;那么让我…

springboot实现接口请求日志自动生成(日志自动埋点)

文章目录 1.作用&#xff1a;2.原理&#xff1a;3.代码&#xff1a;一.config层二. mq层 &#xff1a;三.service层&#xff1a; 4.效果图5.声明 1.作用&#xff1a; springboot接口请求日志自动生成&#xff0c;实现接口日志自动埋点生成 1.统一日志生成格式;—方便查看 2.汇…

day2 数组

977.有序数组的平方 有负数。暴力快排&#xff1a;先对每个元素平方 o(n)&#xff0c;再快排o&#xff08;nlogn&#xff09;&#xff08;先分区 o(n)&#xff0c;再递归排序 递归深度 logn&#xff09; class Solution:def sortedSquares(self, nums: List[int]) -> List…

控制欲过强的Linux小进程

控制欲强?视奸&#xff1f;普通人那才叫视奸&#xff0c;您是皇帝&#xff0c;天下大事无一逃过您的耳目&#xff0c;您想看什么就看什么&#xff0c;臣怀疑他在朋友圈私养兵士&#xff0c;囤积枪甲&#xff0c;蓄意谋反&#xff0c;图谋皇位啊&#xff01; 哈哈哈哈开个玩笑&…

C++ 类和对象 构造函数(下)

一 初始化列表&#xff1a; 1.1 构造函数体赋值&#xff1a; 在C中&#xff0c;构造函数用于创建对象并赋予其初始值。通常&#xff0c;我们可以在构造函数体内对成员变量进行赋值&#xff1a; class Date { public:Date(int year, int month, int day) {_year year;_mont…

常见的数据分析用例 —— 信用卡交易欺诈检测

文章目录 引言数据集分析1. 读入数据并快速浏览2.计算欺诈交易占数据集中交易总数的百分比3. 类别不平衡对模型的影响3.1 总体思路&#xff08;1&#xff09;数据的划分&#xff08;2&#xff09;训练模型&#xff08;3&#xff09;测试模型&#xff08;4&#xff09;解决不平衡…

知迪科技发布了全新软件产品

近日&#xff0c;知迪科技发布了全新软件产品——Vehicle Bus Tool-Trace Version免费版。该软件产品能高效的离线分析汽车总线数据&#xff0c;并拥有一大亮点功能&#xff1a;Ethernet通信离线文件基于ARXML文件的信号级解析&#xff0c;具体操作如下&#xff1a; 1、新建一…

git修改提交姓名

git config --global user.name “新用户名” git config --global user.email “新邮箱地址” 修改提交的用户名 git config --global user.name “yu***”

java转义文本中的HTML字符为安全的字

java转义文本中的HTML字符为安全的字 &#xff0c;以下字符被转义&#xff1a;替换为 (&apos; doesnt work in HTML4) " 替换为 &quot; & 替换为 &amp; < 替换为 < > 替换为 >1.先添加hutool依赖到pom <dependency><groupId>cn…

Docker安装笔记

1. Mac安装Docker 1.1 Docker安装包下载 1.1.1 阿里云 对于10.10.3以下的用户 推荐使用 对于10.10.3以上的用户 推荐使用 1.1.2 官网下载 系统和芯片选择适合自己的安装包 1.2 镜像加速 【推荐】阿里镜像 登陆后&#xff0c;左侧菜单选中镜像加速器就可以看到你的专属地…

阿尔泰科技利用485模块搭建自动灌溉系统实现远程控制

自动灌溉系统又叫土壤墒情监控系统&#xff0c;土壤墒情监控系统主要实现固定站无人值守情况下的土壤墒情数据的自动采集和无线传输&#xff0c;数据在监控中心自动接收入库&#xff1b;可以实现24小时连续在线监控并将监控数据通过有线、无线等传输方式实时传输到监控中心生成…

怎样在 PostgreSQL 中实现数据的异地备份?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 怎样在 PostgreSQL 中实现数据的异地备份&#xff1f;一、异地备份的重要性二、PostgreSQL 中的备份方…

Docker的安装【虚拟机】

Docker的安装【虚拟机】 准备环节【可跳过】 # 进入yum.repos.d目录&#xff0c;保留base.repo 和 CentOs-Base.repo&#xff0c;其余删除 cd /etc/yum.repos.d/ ----------------------------------------------------- # 现将base.repo 和 CentOs-Base.repo 存放至bak包中 …