JavaScript 字符串插值

发布于 2022-06-07 22:21:02 字数 2544 浏览 1003 评论 0

JavaScript 模板文字 支持字符串插值。 例如,假设你想实现一个函数 greet() 对给定的人说 你好 name. 你实施 greet() 使用 字符串连接

function greet(name) {
  return 'Hello ' + name + '!';
}

但是,如果您想将多个变量插入到字符串中,这种方法可能会变得混乱。 您可以改为使用模板文字,这是声明字符串的另一种语法。 模板文字使用反引号 ` 括起来:

function greet(name) {
  return `Hello ${name}!`;
}

const str = greet('World');
typeof str; // "string"
str; // "Hello World!"

${name} 字符串的一部分称为 占位符 。 您可以将任何 JavaScript 表达式 放在占位符中,例如函数调用:

function capitalize(name) {
  return `${name.slice(0, 1).toUpperCase()}${name.slice(1)}`;
}

function greet(name) {
  return `Hello ${capitalize(name)}!`;
}

const str = greet('wOrLd');
typeof str; // "string"
str; // "Hello World!"

使用自定义类

请记住,JavaScript 表达式的计算结果是一个值。 如果您的占位符表达式计算结果为非 null 对象,JavaScript 将尝试调用该对象的 toString()函数 将其转换为字符串。

以下是 JavaScript 如何处理占位符中的对象:

class User {
  constructor(name) {
    this.name = name;
  }

  toString() {
    return this.name;
  }
}

const user = new User('Bill');

const str = `Hello ${user}!`; // "Hello Bill!"

错误案例

如果占位符表达式的计算结果为,则模板文字不会引发错误 null 或者 undefined

`Hello ${null}!`; // "Hello null!"
`Hello ${void 0}!`; // "Hello undefined!"

字符串插值可能引发运行时错误的唯一情况是,如果您的占位符表达式计算为一个对象,其 toString() 函数抛出错误。 例如, JavaScript 符号 转换为字符串时,它们会引发错误:

const sym = Symbol('test symbol');
// Throws "TypeError: Cannot convert a Symbol value to a string"
const str = `Hello ${sym}!`;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

无悔心

暂无简介

文章
评论
24 人气
更多

推荐作者

泛泛之交

文章 0 评论 0

音栖息无

文章 0 评论 0

荆棘i

文章 0 评论 0

泛滥成性

文章 0 评论 0

我还不会笑

文章 0 评论 0

假扮的天使

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文