探索JavaScript模板字面量的威力

在编程的世界中,有时候回归基础反而能带来新的发现。最近,观看了一系列面向初学者的JavaScript视频,以判断它们是否适合儿子学习JavaScript。在这个过程中,意外地学到了一些新东西,尽管已经断断续续地使用JavaScript多年,但之前从未意识到它的威力,只是把它当作定义字符串的另一种方式。

模板字面量简介

模板字面量实际上只是字符串的一个花哨名称,它允许进行字符串插值(这本身也是一个花哨的术语,意味着允许将变量替换到字符串中)。例如,像这样的一个语句:

const name = 'Frank'; console.log('Hello, ' + name + '. Pleased to meet you!');

使用模板字面量可以写成这样:

const name = 'Frank'; console.log(`Hello, ${name}. Pleased to meet you!`);

在这个例子中,模板字面量需要使用反引号字符包围字符串,任何被${<符号>}包围的内容在字符串使用时都会被插值。

那么,这有什么用呢?

好的,可能会想,这有什么用呢?毕竟,上面的示例并不难理解。首先,想象一个更复杂的例子。例如,假设需要使用输入变量构建路径:

const root = 'c:'; const programs = 'program files'; const appfolder = 'my application'; console.log('The path is \'' + root + '\\' + programs + '\\' + appfolder + '\'');

与此相比:

const root = 'c:'; const programs = 'program files'; const appfolder = 'my application'; console.log(`The path is '${root}\\${programs}\\${appfolder}'`);

使用模板字面量看起来更自然,更容易看出引号和空格如何在输出字符串中出现。

另一个不错的特性是,由模板字面量插值的字符串本身可以是模板字面量字符串:

const name = 'Frank'; const greeting = `Hello, ${name}. Pleased to meet you!`; console.log(`Computer says: ${greeting}`);

输出结果为:

Computer says: Hello, Frank. Pleased to meet you!

还可以编写模板字面量内的表达式:

const a = 5; const b = 1; const c = 13; console.log(`The perimeter of the triangle is: ${a + b + c}`);

输出结果为:

The perimeter of the triangle is: 19

模板字面量的真正威力在处理多行字符串时变得显而易见。当在JavaScript中编写多行字符串时,要么必须通过关闭字符串来连接每一行,要么使用反斜杠:

console.log('Please enter your choice: \n1. Pepperoni \n2. Sausage \n3. Mushroom \n');

即使使用这种格式,它可能不会按照预期的方式打印,看这个例子,可能期望每个选择都在它自己的一行,但实际上会看到:

Please enter your choice: 1. Pepperoni 2. Sausage 3. Mushroom

使用模板字面量,可以这样编写这个例子:

console.log(`Please enter your choice:\n1. Pepperoni\n2. Sausage\n3. Mushroom\n`); Please enter your choice: 1. Pepperoni 2. Sausage 3. Mushroom
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485