ES6 模板字符串详解
ES6 模板字符串详解
ES6(ECMAScript 6)引入了模板字符串(Template Literals),这是一种新的字符串字面量语法,使用反引号(`)来定义字符串。模板字符串不仅支持多行字符串,还允许在字符串中嵌入表达式,大大提高了字符串操作的灵活性和可读性。
1. 基本语法
1.1 普通字符串
模板字符串可以用作普通的字符串,语法与普通字符串相似,但使用反引号(`)包围。
const greeting = `Hello, world!`;
console.log(greeting); // 输出: Hello, world!
1.2 多行字符串
模板字符串支持多行字符串,不需要使用 \n 来表示换行。
const multiLine = `This is a
multi-line
string.`;
console.log(multiLine);
// 输出:
// This is a
// multi-line
// string.
2. 字符串插值
2.1 嵌入表达式
模板字符串允许在字符串中嵌入表达式,使用 ${expression} 语法。
const name = "Alice";
const age = 30;
const greeting = `Hello, my name is ${name} and I am ${age} years old.`;
console.log(greeting); // 输出: Hello, my name is Alice and I am 30 years old.
2.2 嵌入复杂表达式
嵌入的表达式可以是任何有效的 JavaScript 表达式,包括函数调用和算术运算。
const a = 5;
const b = 10;
const result = `The sum of ${a} and ${b} is ${a + b}.`;
console.log(result); // 输出: The sum of 5 and 10 is 15.
3. 标签模板
3.1 基本概念
标签模板允许在模板字符串前添加一个标签函数,该函数可以对模板字符串进行自定义处理。
function tag(strings, ...values) {let result = '';for (let i = 0; i < values.length; i++) {result += strings[i] + values[i];}result += strings[strings.length - 1];return result.toUpperCase();
}const name = "Alice";
const age = 30;
const taggedString = tag`Hello, my name is ${name} and I am ${age} years old.`;
console.log(taggedString); // 输出: HELLO, MY NAME IS ALICE AND I AM 30 YEARS OLD.
3.2 标签函数参数
标签函数的第一个参数是一个字符串数组,其余参数是嵌入表达式的值。
function highlight(strings, ...values) {let result = '';for (let i = 0; i < values.length; i++) {result += strings[i] + `<span class="highlight">${values[i]}</span>`;}result += strings[strings.length - 1];return result;
}const name = "Alice";
const age = 30;
const highlightedString = highlight`Hello, my name is ${name} and I am ${age} years old.`;
console.log(highlightedString);
// 输出: Hello, my name is <span class="highlight">Alice</span> and I am <span class="highlight">30</span> years old.
4. 特殊字符处理
4.1 转义字符
在模板字符串中,反引号(`)和美元符号($)需要转义。
const str = `\` is the escape character for template literals.`;
console.log(str); // 输出: ` is the escape character for template literals.const str2 = `\$ is used to denote a variable or expression.`;
console.log(str2); // 输出: $ is used to denote a variable or expression.
4.2 原始字符串
使用 String.raw 标签函数可以获取原始字符串,包括转义字符。
const str = String.raw`This is a \n newline.`;
console.log(str); // 输出: This is a \n newline.
5. 嵌套模板字符串
模板字符串中可以嵌套另一个模板字符串。
const name = "Alice";
const age = 30;
const nestedString = `Hello, my name is ${`Nested: ${name}`} and I am ${age} years old.`;
console.log(nestedString); // 输出: Hello, my name is Nested: Alice and I am 30 years old.
6. 最佳实践
6.1 代码可读性
模板字符串提高了代码的可读性,尤其是在处理多行字符串和嵌入表达式时。
const name = "Alice";
const age = 30;
const address = "123 Main St";const profile = `Name: ${name}
Age: ${age}
Address: ${address}`;
console.log(profile);
// 输出:
// Name: Alice
// Age: 30
// Address: 123 Main St
6.2 性能考虑
虽然模板字符串在大多数情况下性能良好,但在极端情况下(如非常大的字符串或频繁的字符串拼接)可能会有一些性能开销。在这种情况下,可以考虑使用传统的字符串拼接方法。
7. 总结
模板字符串是 ES6 引入的一个非常有用的特性,它不仅简化了多行字符串的创建,还提供了强大的字符串插值功能。通过标签模板,还可以对字符串进行自定义处理,满足更复杂的需求。掌握模板字符串的使用方法,可以使你的代码更加简洁、可读和高效。
相关文章:
ES6 模板字符串详解
ES6 模板字符串详解 ES6(ECMAScript 6)引入了模板字符串(Template Literals),这是一种新的字符串字面量语法,使用反引号()来定义字符串。模板字符串不仅支持多行字符串,…...
浏览器插件启动本地程序
浏览器插件支持启动本地程序,且支持win、mac、linux多个平台,使用的是nativeMessaging。nativeMessaging官方api说明。nativeMessaging支持启动本地程序且进行通信。 我们直接拿官方提供的例子进行说明,github地址。 以win为例 1、添加注册…...
Ubuntu ESP32开发环境搭建
文章目录 ESP32开发环境搭建安装ESP-IDF搭建一个最小工程现象 ESP32开发环境搭建 最近有个小项目需要用到能够联网的mcu驱动,准备玩玩esp的芯片,记录下ESP32开发环境搭建的过程。 ESP-IDF 是乐鑫科技为其 ESP32 系列芯片提供的官方开发框架。这个框架主…...
【gitlab】部署
直接RPM安装 部署的方式是:使用外部的nginx作为代理,使用https方式。 1、下载安装文件 gitlab-ce-17.0.3-ce.0.el7.x86_64.rpm 2、安装 yum install gitlab-ce-17.0.3-ce.0.el7.x86_64.rpm 或者安装yum源在线安装: 添加镜像源:新建 /et…...
vue中路由缓存
vue中路由缓存 问题描述及截图解决思路关键代码及打印信息截图 问题描述及截图 在使用某一平台时发现当列表页码切换后点击某一卡片进入详情页后,再返回列表页时页面刷新了。这样用户每次看完详情回到列表页都得再重新输入自己的查询条件,或者切换分页到…...
Github 2024-11-18 开源项目周报 Top15
根据Github Trendings的统计,本周(2024-11-18统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目8TypeScript项目4Jupyter Notebook项目2Go项目2Shell项目1OpenHands: 人工智能驱动的软件开发代理平台 创建周期:195 天开发语言:P…...
GRCNN使用onnxruntime和tensorrt推理
下载GRCNN项目:https://github.com/skumra/robotic-grasping.git 导出onnx模型: import torchnet torch.load("trained-models/jacquard-rgbd-grconvnet3-drop0-ch32/epoch_42_iou_0.93") x torch.rand(1, 4, 300, 300).cuda() torch.onnx.…...
java中的this关键字
🎉🎉🎉欢迎来到我的博客,我是一名自学了2年半前端的大一学生,熟悉的技术是JavaScript与Vue.目前正在往全栈方向前进, 如果我的博客给您带来了帮助欢迎您关注我,我将会持续不断的更新文章!!!🙏🙏🙏 文章目录…...
Easyexcel(3-文件导出)
相关文章链接 Easyexcel(1-注解使用)Easyexcel(2-文件读取)Easyexcel(3-文件导出) 响应头设置 通过设置文件导出的响应头,可以自定义文件导出的名字信息等 //编码格式为UTF-8 response.setC…...
iOS应用网络安全之HTTPS
移动互联网开发中iOS应用的网络安全问题往往被大部分开发者忽略, iOS9和OS X 10.11开始Apple也默认提高了安全配置和要求. 本文以iOS平台App开发中对后台数据接口的安全通信进行解析和加固方法的分析. 1. HTTPS/SSL的基本原理 安全套接字层 (Secure Socket Layer, SSL) 是用来…...
openharmony napi调试笔记
一、动态库的编译 使用的编译环境是ubuntu20.04 1、使用vscode配置openharmony sdk交叉编译环境 首先下载openharmony的sdk,如native-linux-x64-4.1.7.5-Release.zip 解压后native目录下就是交叉编译用的sdk 在要编译的源代码目录下新建.vscode目录,…...
springboot基于微信小程序的农产品交易平台
摘 要 随着网络科技的发展,利用小程序对基于微信小程序的农产品交易平台进行管理已势在必行;该系统将能更好地理解用户需求,优化基于微信小程序的农产品交易平台策略,提高基于微信小程序的农产品交易平台效率和质量。本文讲述了基…...
Spring Boot 注解
Spring Boot 是基于 Spring 框架的开发框架,提供了许多注解来简化配置和开发。以下是一些常见的 Spring Boot 注解,包括它们的作用和简单介绍: 1. SpringBootApplication 作用:标识一个 Spring Boot 应用的入口点。它是一个组合…...
P8692 [蓝桥杯 2019 国 C] 数正方形:结论,组合数学
题目描述 在一个 NNNN 的点阵上,取其中 44 个点恰好组成一个正方形的 44 个顶点,一共有多少种不同的取法? 由于结果可能非常大,你只需要输出模 10971097 的余数。 如上图所示的正方形都是合法的。 输入格式 输入包含一个整数 …...
Spring Boot开发—— 实现订单号生成逻辑
文章目录 1. UUID2. 数据库序列或自增ID3. 时间戳 随机数/序列4. 分布式唯一ID生成方案 几种常见的解决方案 UUID 实例代码数据库序列或自增ID时间戳 随机数/序列分布式唯一ID生成方案 Snowflake ID结构类定义和变量初始化构造函数ID生成方法辅助方法 在 Spring Boot 中设计…...
React中Redux的基本用法
Redux是React中使用较多的状态管理库,这篇文章主要介绍了Redux的基本用法,快来看看吧 首先我们需要新建一个React项目,我使用的ReactTS,文件结构如下 Redux的相关使用主要在store文件中 Store:存储整个应用的状态Act…...
unity3d————基础篇小项目(设置界面)
代码示例: 设置界面 using System.Collections; using System.Collections.Generic; using UnityEngine;public class SettingPanel : BasePanel<SettingPanel> {public UIButton btnClose;public UISlider sliderMusic;public UISlider sliderSound;public…...
推荐几个 VSCode 流程图工具
Visual Studio Code(简称VSCode)是一个由微软开发的免费、开源的代码编辑器。 VSCode 发布于 2015 年,而且很快就成为开发者社区中广受欢迎的开发工具。 VSCode 可用于 Windows、macOS 和 Linux 等操作系统。 VSCode 拥有一个庞大的扩展市…...
用java和redis实现考试成绩排行榜
一、引言 在各类考试场景中,无论是学校里的学业测试,还是线上培训课程的考核,亦或是各类竞赛的选拔,成绩排行榜都是大家颇为关注的一个元素。它不仅能直观地展示考生之间的成绩差异,激发大家的竞争意识,还能…...
hhdb数据库介绍(9-24)
计算节点参数说明 failoverAutoresetslave 参数说明: PropertyValue参数值failoverAutoresetslave是否可见是参数说明故障切换时,是否自动重置主从复制关系默认值falseReload是否生效否 参数设置: <property name"failoverAutor…...
从登录到鉴权:一个前后端分离项目的完整JWT非对称加密配置指南(Vue3 + Spring Boot)
从登录到鉴权:一个前后端分离项目的完整JWT非对称加密配置指南(Vue3 Spring Boot) 在现代Web应用开发中,前后端分离架构已成为主流选择。这种架构下,如何安全高效地处理用户认证与授权成为一个关键问题。本文将带你从…...
【问题处理】如何解决PSQLException中2-byte值超出范围导致的整数溢出错误
1. 什么是PSQLException中的2-byte值溢出错误 最近在调试一个Java应用时,遇到了一个让人头疼的错误:Tried to send an out-of-range integer as a 2-byte value: 110629。这个错误看起来有点晦涩,但其实理解起来并不复杂。简单来说࿰…...
STM32HAL库项目实战:我把W5500和MQTTClient库‘缝’起来,实现了阿里云OTA升级前传
STM32HAL库与W5500深度整合:从MQTT云连接到OTA升级的工程实践 在嵌入式设备智能化浪潮中,远程固件升级(OTA)已成为工业设备的标配功能。本文将揭示如何基于STM32HAL库和W5500以太网芯片构建可靠的云连接通道,为后续OTA升级打下坚实基础。不同…...
LSTM电池SOC估计最基本方法及全包代码:包含两个数据集、预处理代码、模型代码与估计结果
LSTM做电池SOC估计,最基本的方法,入门必学,包括两个数据集,及其介绍、预处理代码、模型代码、估计结果等,这是我见过最全的一个SOC估计代码包,总共文件大概有70个左右最近在折腾电池SOC估计,发现…...
别再只仿真了!手把手教你用LabVIEW+USRP-2920搭建真实无线通信链路(BPSK/QPSK调制实战)
从仿真到实战:LabVIEW与USRP-2920构建无线通信链路的完整指南 在通信工程领域,仿真与硬件实现之间往往存在一道难以逾越的鸿沟。许多工程师能够熟练使用MATLAB或LabVIEW进行通信系统仿真,但当面对USRP-2920这样的射频硬件时,却常常…...
别再为IP冲突头疼!YOLOv5+海康威视摄像头组网与实时检测的完整避坑指南
工业视觉组网实战:YOLOv5与海康威视摄像头的智能协同方案 在智能制造与安防监控领域,将AI算法与专业摄像设备结合已成为技术标配。但当工程师真正着手部署时,往往会陷入网络配置的泥潭——IP冲突导致设备失联、RTSP流媒体断断续续、多网卡环…...
Web开发中前端与Node服务中的信息安全与解决办法
Web开发中前端与Node服务中的信息安全与解决办法 input限制特殊字符和长度 漏洞描述: 永远不要相信用户输入的信息,如常规的注入脚本通过input输入之后被页面执行 整改办法 方法1:对于vue项目中ElementUI的el-input 和 原生input <el-in…...
重构直播互动体验:BLiveChat的跨平台弹幕解决方案
重构直播互动体验:BLiveChat的跨平台弹幕解决方案 【免费下载链接】blivechat 用于OBS的仿YouTube风格的bilibili直播评论栏 项目地址: https://gitcode.com/gh_mirrors/bl/blivechat BLiveChat作为一款开源的B站直播弹幕工具,通过仿YouTube风格的…...
酷狗音乐API实战指南:解决音乐应用开发的三大核心痛点
酷狗音乐API实战指南:解决音乐应用开发的三大核心痛点 【免费下载链接】KuGouMusicApi 酷狗音乐 Node.js API service 项目地址: https://gitcode.com/gh_mirrors/ku/KuGouMusicApi 在构建现代音乐应用时,开发者常常面临歌词同步不精准、API接口分…...
OpenClaw深度配置:Qwen3.5-9B模型参数调优指南
OpenClaw深度配置:Qwen3.5-9B模型参数调优指南 1. 为什么需要关注模型参数调优? 第一次用OpenClaw对接Qwen3.5-9B模型时,我遇到了一个奇怪现象:同样的"整理桌面截图并分类归档"任务,白天执行成功率能达到8…...
