JS 模板字符串

JS 模板字符串JS 模板字符串 ES6 模板字符串引用 ES6 模板字符串传统的 JavaScript 语言 输出模板通常是这样写的 下面使用了 jQuery 的方法 result append Thereare b basket count b itemsinyourb em em

JS 模板字符串

ES6 模板字符串

传统的 JavaScript 语言,输出模板通常是这样写的(下面使用了 jQuery 的方法)。

$('#result').append( 'There are ' + basket.count + ' ' + 'items in your basket, ' + '' + basket.onSale + ' are on sale!' ); 

上面这种写法相当繁琐不方便,ES6 引入了模板字符串解决这个问题。

$('#result').append(` There are ${ 
     basket.count} items in your basket, ${ 
     basket.onSale} are on sale! `); 

模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

// 普通字符串 `In JavaScript '\n' is a line-feed.` // 多行字符串 `In JavaScript this is not legal.` console.log(`string text line 1 string text line 2`); // 字符串中嵌入变量 let name = "Bob", time = "today"; `Hello ${ 
     name}, how are you ${ 
     time}?` 

上面代码中的模板字符串,都是用反引号表示。如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。

let greeting = `\`Yo\` World!`; 

如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。

$('#list').html(` 
    
  • first
  • second
`
);

上面代码中,所有模板字符串的空格和换行,都是被保留的,比如

    标签前面会有一个换行。如果你不想要这个换行,可以使用
    trim方法消除它。

$('#list').html(` 
    
  • first
  • second
`
.trim());

模板字符串中嵌入变量,需要将变量名写在${}之中。

function authorize(user, action) { 
    if (!user.hasPrivilege(action)) { 
    throw new Error( // 传统写法为 // 'User ' // + user.name // + ' is not authorized to do ' // + action // + '.' `User ${ 
     user.name} is not authorized to do ${ 
     action}.`); } } 

大括号内部可以放入任意的 JavaScript 表达式,可以进行运算,以及引用对象属性。

let x = 1; let y = 2; `${ 
     x} + ${ 
     y} = ${ 
     x + y}` // "1 + 2 = 3" `${ 
     x} + ${ 
     y * 2} = ${ 
     x + y * 2}` // "1 + 4 = 5" let obj = { 
   x: 1, y: 2}; `${ 
     obj.x + obj.y}` // "3" 

模板字符串之中还能调用函数。

function fn() { 
    return "Hello World"; } `foo ${ 
     fn()} bar` // foo Hello World bar 

如果大括号中的值不是字符串,将按照一般的规则转为字符串。比如,大括号中是一个对象,将默认调用对象的toString方法。

如果模板字符串中的变量没有声明,将报错。

// 变量place没有声明 let msg = `Hello, ${ 
     place}`; // 报错 

由于模板字符串的大括号内部,就是执行 JavaScript 代码,因此如果大括号内部是一个字符串,将会原样输出。

`Hello ${ 
     'World'}` // "Hello World" 

模板字符串甚至还能嵌套。

const tmpl = addrs => ` 
    
${ addrs.map(addr => ` <tr><td>${ addr.first} ${ addr.last} `
).join('')} </table> `;

上面代码中,模板字符串的变量之中,又嵌入了另一个模板字符串,使用方法如下。

const data = [ { 
    first: ' 
   
     ' 
   , last: 'Bond' }, { 
    first: 'Lars', last: ' 
   
     ' 
    }, ]; console.log(tmpl(data)); // 
   
// // // Bond // // Lars // // //

如果需要引用模板字符串本身,在需要时执行,可以写成函数。

let func = (name) => `Hello ${ 
     name}!`; func('Jack') // "Hello Jack!" 

上面代码中,模板字符串写成了一个函数的返回值。执行这个函数,就相当于执行这个模板字符串了。

引用

ECMAScript 6 入门——阮一峰

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222368.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午3:56
下一篇 2026年3月17日 下午3:56


相关推荐

  • 什么是hardcode编码

    什么是hardcode编码所谓 hardcode 即硬编码 1 把一个本来应该 可以 写到配置信息中的信息直接在程序代码中写死了 2 程序代码中出现了魔法值 对于情况 1 例如我们写了一个收发邮件的程序 用户名 密码 服务器地址等这些配置信息写成外部配置 在程序代码中读取配置信息 但是如果我们直接写死在程序代码中 每次改信息时都需要重新编译 且如果多处程序代码中出现了这种配置信息 修改起来也比较麻烦 这种程序不易于维护 大部分程序语言里 可以将一个固定数值定义为一个标记 然后用这个特殊标记来取代变量名称 当标记名称改变时 变

    2026年3月19日
    2
  • Nmap命令详解及常用命令总结[通俗易懂]

    Nmap命令详解及常用命令总结[通俗易懂]Nmap学习文章目录Nmap学习0Nmap介绍1Nmap命令详解1.1Nmap命令help详解(内附中文翻译)1.2Nmap命令思维导图2Nmap常见使用场景以及相关命令2.1Nmap常用扫描命令2.1.1扫描固定端口,以sqlServer为例2.1.2获取远程主机的系统类型及开放端口2.1.3列出开放了指定端口的主机列表2.1.4在网络寻找所有在线主机2.1.5…

    2022年5月28日
    115
  • Subversion+RabbitVCS 版本控制「建议收藏」

    Subversion+RabbitVCS 版本控制「建议收藏」Ubuntu10.04学习笔记(4)——Subversion+RabbitVCS版本控制2011年04月19日星期二17:281、安装Subversion软件sudoapt-getinstallapache2%先安装apache,配合阅读svn用,并且平时开发也是要用到的sudoapt-getinstallsubversion%svn…

    2022年7月18日
    15
  • 网线的交叉线和直通线原理

    网线的交叉线和直通线原理转载自 http://yxy73622.blog.163.com/blog/static/1733173742012231114013341/正线(标准568B):两端线序一样,线序是:白橙,橙,白绿,蓝,白蓝,绿,白棕,棕。反线(568A):一端为正线的线序,另一端为:白绿,绿,白橙,蓝,白蓝,橙,白棕,棕。T568A标准连线顺序从左到右依次为:1-绿白、2-绿、3-橙白、4

    2022年6月19日
    32
  • SSH config 文件的作用

    SSH config 文件的作用此内容为原创转载请添加必要说明 谢谢 今天趁着白雪皑皑覆青山的美景 我简单写一下 Linux 中 SSHconfig 文件的使用 首先我们得知道什么是 SSH 通俗讲服务器与客户端的安全通信协议 具体安装有客户端和服务端两种 具体安装方式 我在此不再累赘 对于安装好 SSH 服务之后如何通过 config 这里我们使用 Xshell 实现多台 linux 服务器管理 这里我来一一阐述 如下是 Xshell 客户端

    2026年3月17日
    2
  • 网站系统开发需要掌握的技术有哪些_网页开发需要学什么

    网站系统开发需要掌握的技术有哪些_网页开发需要学什么1、JDBC技术在JavaWeb应用开发中,数据库管理系统(RDBMS)的使用是不可缺少的。JDBC(JavaDatabaseConnectivity)是一种用于执行SQL语句的Ja

    2022年8月2日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号