ES6 字符串的扩展
模板字符串
ES6 引入了模板字符串(Template Strings),也被称为模板字面量,是一种方便拼接字符串的新语法。模板字符串使用反引号(`)来包裹字符串,并允许在字符串中插入变量、表达式和多行文本。
字符串插值
使用${}
来在模板字符串中插入变量或表达式,其中${}
中的内容会被解析并替换为实际的值。
javascript
const name = 'John'
const age = 30
const message = `Hello, my name is ${name} and I'm ${age} years old.`
console.log(message)
// 输出:Hello, my name is John and I'm 30 years old.
多行字符串
使用模板字符串可以很方便地创建多行文本,不需要使用\n
来手动添加换行符。
javascript
const multiLineText = `
This is a multi-line text.
It spans across multiple lines
and maintains the line breaks.
`
console.log(multiLineText)
/* 输出:
This is a multi-line text.
It spans across multiple lines
and maintains the line breaks.
*/
嵌套模板字符串
模板字符串可以嵌套在其他模板字符串中,使得字符串拼接更加灵活。
javascript
const name = 'Alice'
const greeting = `Hello, ${`my name is ${name}`}.`
console.log(greeting)
// 输出:Hello, my name is Alice.
带标签的模板字符串
可以在模板字符串前添加一个标签函数,这个标签函数将模板字符串的各个部分解析成多个参数,使得我们可以对字符串进行自定义处理。
javascript
function tagFunc(strings, ...values) {
console.log(strings) // 包含模板字符串中的文本部分
console.log(values) // 包含模板字符串中插入的变量部分
}
const name = 'Bob'
const age = 25
tagFunc`Hello, my name is ${name} and I'm ${age} years old.`
/* 输出:
[ 'Hello, my name is ', " and I'm ", ' years old.' ]
[ 'Bob', 25 ]
*/
TIP
模板字符串的引入简化了字符串拼接和多行文本的创建,使得代码更加清晰易读。
在现代 JavaScript 开发中,模板字符串广泛用于生成 HTML 标记、日志信息、网络请求等多种场景。