”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > JavaScript 中的字符串插值。

JavaScript 中的字符串插值。

发布于2024-11-03
浏览:832

String Interpolation in JavaScript.

模板文字简介。

字符串操作是编程中非常常见的任务,尤其是在构建交互式 Web 应用程序时。如果您曾经花时间使用 JavaScript,那么您可能必须将一些变量放入字符串中。
在旧版本的 JavaScript 中,这意味着使用运算符通过称为 字符串连接 的过程将字符串连接在一起。然而,随着 JavaScript ES6(2015) 更新中引入 模板文字 。我们现在有一种更简洁的方法将变量插入字符串,称为 字符串插值.

什么是模板文字?

模板文字使我们能够更轻松地操作字符串。它们用反引号 (`) 而不是 (') 或 (") 括起来,并且它们通过使用 (${}) 语法将变量或函数调用直接放入字符串中来支持字符串插值。

这是模板文字如何简化字符串插值的示例。

const name = "John"
const age = 24

// Old method using concatenation
const greeting = "Hello, "   name   "! You are "   age   " years old."

// New method using template literals
const greetingWithTemplateLiteral = `Hello, ${name}! You are ${age} years old.`

console.log(greetingWithTemplateLiteral) // Outputs: Hello, John! You are 24 years old.

使用模板文字的好处

1. 提高可读性

使用字符串连接时,很容易迷失在一堆符号中,尤其是在处理较长的字符串时。模板文字通过让您以更容易理解的方式编写字符串来避免这种情况。

const product = "laptop"
const price = 1400

console.log(`The price of the ${product} is $${price}`)
// Outputs: The price of the laptop is $1400

2. 多行字符串

在模板文字之前,您必须使用 \n 等转义字符来生成多行字符串。现在你可以将它们写在反引号(`)中。

// Old method
const multiLineString1 = "This is the first line"   "\n"   "This is the second line"   "\n"   "This is the third line"

// New method
const multiLineString2 = `This is the first line
This is the second line
This is the third line`

console.log(multiLineString1)
console.log(multiLineString2)
/* Both output:
This is the first line
This is the second line
This is the third line
*/

3. 表达式求值

您还可以执行计算、调用函数或操作字符串内的数据。

const a = 1
const b = 10

console.log(`The sum of a and b is ${a   b}`) 
// Outputs: The sum of a and b is 11

const upperCaseName = (name) => name.toUpperCase()
console.log(`Your name in uppercase is ${upperCaseName("John")}`)
// Outputs: Your name in uppercase is JOHN

JavaScript 中的常见用例

1. HTML生成

您可以通过插值将变量直接放入字符串中,而不是通过连接构建 HTML 字符串。

const name = "John"
const htmlContent = `
  

Hello, ${name}!

Welcome to the site.

`

2. 记录消息

您还可以将变量直接插入日志消息中,无需连接。

const user = "John"
const action = "logged in"

console.log(`User ${user} just ${action}`)
// Outputs: User John just logged in

3. 创建 URL

模板文字也让构造 URL 变得更加容易。

const userId = 123
const apiUrl = `https://api.example.com/user/${userId}/details`

console.log(apiUrl)
// Outputs: https://api.example.com/user/123/details

4. 条件逻辑

另一个很好的用例是条件逻辑。通过模板文字,您可以使用三元运算符 (? :) 为字符串提供简单条件,这是 if-else 条件的简写。
逻辑运算符,如 &&(与)或 || (or) 也可用于向字符串添加条件部分。这消除了额外的 if-else 语句或连接的需要。

const isMember = true
console.log(`User is ${isMember ? 'a member' : 'not a member'}`) 
// Outputs: User is a member

您还可以在模板文字中添加更复杂的表达式。

/* In this example, the condition age >= 18 is evaluated
the result is either “an adult” or “a minor” based on the value of age*/
const age = 24

const message = `You are ${age >= 18 ? 'an adult' : 'a minor'}`

console.log(message) 
// Outputs: You are an adult

/*In this, if isLoggedIn is true and username exists
username is displayed or else, it defaults to “Guest” */
const isLoggedIn = true
const username = "John"

const greeting = `Welcome ${isLoggedIn && username ? username : 'Guest'}`

console.log(greeting)
// Outputs: Welcome John

结论

JavaScript 中的模板文字提供了一种更清晰、更有效的方式来处理字符串插值。在构建 Web 内容、记录消息或创建更具可读性的代码之间,此方法提供了您所需的灵活性。

下次处理变量和字符串时,请尝试使用模板文字。您很快就会明白为什么它是我使用 JavaScript 的首选方法。

资源

  1. MDN Web 文档 - 模板文字
  2. GitHub - 第一阶段审查字符串实验室
  3. W3 学校 - JavaScript 模板字符串
版本声明 本文转载于:https://dev.to/isaiah2k/string-interpolation-in-javascript-1gpb?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在 Galera 集群节点上设置 MariaDB/MySQL Exporter 以进行 Prometheus 监控
    如何在 Galera 集群节点上设置 MariaDB/MySQL Exporter 以进行 Prometheus 监控
    社区开发者您好! ? 在这篇文章中,我将引导您完成在 Galera Cluster 节点上设置 MariaDB/MySQL Exporter 以使用 Prometheus 进行监控所采取的步骤。就我而言,我在具有三个节点的云服务器提供商上运行 MariaDB Galera Cluster,并使用 P...
    编程 发布于2024-11-08
  • 演示疼痛
    演示疼痛
    我想讲述一件每次我需要做的事情时都困扰我的事情。它正在准备演示。一般来说,当我尝试使用 Viktor Lidholt 的 slick_slides 来准备演示文稿时,我会在 PowerPoint 中准备演示文稿。  如何放置不同大小的图像,如何选择字体,使用什么颜色,如何放置代码,如何突出显示它,所...
    编程 发布于2024-11-08
  • 请求 Iris 的正文限制中间件
    请求 Iris 的正文限制中间件
    概述 Iris Body Limit 中间件是一个强大的工具,用于控制 Iris Web 应用程序中传入请求正文的大小。通过设置请求正文的大小限制,您可以防止客户端发送过大的负载,否则可能会压垮您的服务器或导致拒绝服务 (DoS) 攻击。此中间件对于处理文件上传、JSON 有效负载...
    编程 发布于2024-11-08
  • 如何在 cookie 中存储 PHP 数组以及安全性和序列化的最佳实践是什么?
    如何在 cookie 中存储 PHP 数组以及安全性和序列化的最佳实践是什么?
    在 Cookie 中存储 PHP 数组在 PHP 中,可以将数组存储在 Cookie 中,以便在后续请求时轻松检索。然而,考虑安全隐患并使用正确的序列化技术至关重要。序列化选项要将数组转换为 cookie 兼容格式,您可以选择以下方法:JSONsetcookie('your_cookie_name'...
    编程 发布于2024-11-08
  • 如何设置VS Code调试工作目录?
    如何设置VS Code调试工作目录?
    设置 VS Code 中调试的工作目录在 Visual Studio Code (VS Code) 中调试 Python 程序时,它通常很有用指定脚本应在其中运行的工作目录。这允许您使用与代码所在的特定目录相关的文件和资源。要将工作目录动态设置为当前打开的 Python 文件的目录,请修改 laun...
    编程 发布于2024-11-08
  • 婴儿学步学习 Laravel
    婴儿学步学习 Laravel
    欢迎回来,开发者! ✨ 在 Laravel 之旅的这一章中(请记住,我在撰写这些文章时正在学习,因此这将是您能找到的最现实的教程系列之一!),我们将深入研究我们的 Laravel 项目。我们将探索项目结构,熟悉迁移,并以最简单的方式分解 MVC 架构。 ?今天的议程...
    编程 发布于2024-11-08
  • 如何动态包含具有不受控制的“document.write()”内容的脚本?
    如何动态包含具有不受控制的“document.write()”内容的脚本?
    动态添加具有不受控制的源内容的脚本标记当内容来自于控件外部时,创建具有外部源的脚本标记可能会带来挑战包括使用 document.write() 的代码。如前所述,仅在 中附加 script 标记无法支持此类内容。要解决此问题,请考虑以下解决方案:使用 document.create 新建一个 sc...
    编程 发布于2024-11-08
  • 在 JavaScript 中如何有效地确定一个数字是否为素数?
    在 JavaScript 中如何有效地确定一个数字是否为素数?
    在 JavaScript 中高效验证素数在计算机编程中,确定给定数字是否是素数是一项基本任务。素数是大于 1 的正整数,除了 1 和它本身之外没有正因数。检查素数的一种流行方法涉及埃拉托斯特尼筛法。然而,出于性能考虑,可以采用更有效的方法,如以下 JavaScript 实现所示:let inputV...
    编程 发布于2024-11-08
  • 为什么 Lambda 表达式需要最终局部变量而不是实例变量?
    为什么 Lambda 表达式需要最终局部变量而不是实例变量?
    Lambda 表达式和变量作用域:为什么 Local ≠ Instance在 Java 中使用 lambda 表达式时,一个常见的困惑点是为什么局部变量需要终结,而实例变量需要终结不要。本文旨在阐明这种区别背后的根本原因。局部变量:最终性命令在 lambda 表达式中,局部变量必须标记为 Final...
    编程 发布于2024-11-08
  • CKA 全程课程日 为什么使用 Kubernetes?
    CKA 全程课程日 为什么使用 Kubernetes?
    那么,您可能已经使用 Docker 容器有一段时间了,对吧?我知道旋转第一个容器的兴奋感就像魔法一样,但随后现实袭来。您开始注意到大规模管理容器很快就会成为物流噩梦。就在那时,Kubernetes(K8s)像经验丰富的项目经理一样进入房间,准备接管并简化一切。 在这篇文章中,我们将探讨独立容器面临的...
    编程 发布于2024-11-08
  • 简要封装示例
    简要封装示例
    书包: 该示例创建一个名为 bookpack 的包,其中包含一个用于管理书籍数据库的简单类。 图书类别: 它有私有属性 title、author 和 pubDate(标题、作者和出版日期)。 构造方法初始化属性。 show() 方法显示书籍详细信息。 BookDemo类: 创建一个包含 5 个 Bo...
    编程 发布于2024-11-08
  • 适用于 AWS 云的简单 SaaS 的技术堆栈
    适用于 AWS 云的简单 SaaS 的技术堆栈
    介绍 注1:这里是托管的交互式演示:demo.saasconstruct.com 注 2:我每个 SaaS 设置的每月账单为 3-5 美元,其中大部分是 CI/CD 成本。 注3:模板在这里:saasconstruct.com。 我在 AWS 上完成了多个 AI PoC 和 MVP...
    编程 发布于2024-11-08
  • 为什么在事件处理程序中使用箭头函数时“this”会出现意外行为?
    为什么在事件处理程序中使用箭头函数时“this”会出现意外行为?
    JavaScript - 箭头函数和事件处理程序当使用箭头函数作为事件处理程序的回调时,函数中的 this 值是意外的。这篇博文解释了此行为背后的原因,并提供了使用 event.currentTarget.箭头函数和词法作用域访问预期元素的解决方案与常规函数不同,箭头函数没有其自己的上下文或范围。相...
    编程 发布于2024-11-08
  • Aurora PostgreSQL 掌握:让您的团队喜极而泣的防弹 Java 模型和 DAO
    Aurora PostgreSQL 掌握:让您的团队喜极而泣的防弹 Java 模型和 DAO
    听着,代码骑师。我即将提供一些知识,帮助您将 Aurora PostgreSQL 游戏从业余游戏转变为大联盟游戏。我们谈论的是 Java 模型和数据库访问器,它们会让您的高级开发人员喜极而泣,而您的 DBA 是否会给您买啤酒(取决于您的年龄)。 为什么这很重要: 性能:草率的模型和 ...
    编程 发布于2024-11-08
  • 理解后端开发中的责任链设计模式
    理解后端开发中的责任链设计模式
    责任链 (CoR) 设计模式是一种强大的行为模式,可以显着增强后端开发。此模式允许您通过处理程序链传递请求,其中每个处理程序可以处理请求或将其传递到下一个处理程序。在本博客中,我们将从后端角度探讨 CoR 模式,特别关注其在 Web 服务中的请求验证和处理中的应用,并使用 Java 作为示例。 ...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3