该园用来记录个人的学习内容,有些杂乱,谅解~嘿嘿~

Chloe

自学前端的小菜鸟一枚呀~
记录学习的知识

(2)字符串插值

模板字面量最常用的一个特性是支持字符串插值,也就是可以在一个连续定义中插入一个或多个值。

  • 技术上讲,模板字面量不是字符串,而是一种特殊的JavaScript句法表达式,只不过求值后得到的是字符串。模板字面量在定义时立即求值并转换为字符串实例,任何插入的变量也会从它们最接近的作用域中取值。

字符串插值通过在${}中使用一个JavaScript表达式实现:

let value = 5;
let exponent = 'second';
//以前,字符串插值是这样实现的:
let interpolatedString = value + ' to the ' + exponent + ' power is ' + (value * value);
console.log(interpolatedString);

//现在,可以用模板字面量这样实现:
let interpolatedTemplateLiteral = `${ value } to the ${ exponent } power is ${ value * value } `
console.log(interpolatedTemplateLiteral);

运行结果如图:

所有插入的值都会使用toString()强制转型为字符串,而且任何JavaScript表达式都可以用于插值。嵌套的模板字符串无须转义:

console.log(`Hello, ${ `World` }! `); //Hello, World!

将表达式转为字符串时会调用toString():

let foo = { toString: () => 'world' };
console.log(`Hello, ${foo}! `);   //Hello, World! 

在插值表达式中可以调用函数和方法:

function capitalize(word) {
    return `${word[0].toUpperCase()}${word.slice(1)}`;
}
console.log(`${capitalize('hello')}, ${capitalize('world')}! `); //Hello, World! 

此外,模板也可以插入自己之前的值:

let value = '';
function append() {
    value = `${value}abc`;
    console.log(value);
}
append();//abc
append();//abcabc
append();//abcabcabc

参考资料:JavaScript高级程序设计(第4版)

posted @ 2022-04-24 16:34  Chloe56  阅读(199)  评论(0)    收藏  举报