ES6: 模板字符串

ES6: 模板字符串模板字符串主要用于插入表达式

前言:看了MDN的官方文档,让我一个头两个大。可能又陷入了完美主义的陷阱:总是想一下子把关于某方面的知识全部看完,全部看懂。就像我本来只是想查看一下单词take,却把所有的关于take的短语看了一遍,结果一个没记住。有些用法可能从它诞生到以后被废弃都使用不到,花费时间在它上面没有任何意义。因此,我是想介绍一下它最基础,最核心的用法。其他不常用用法可能会一笔带过。

一、模板字符串

模板字符串是可以插入表达式的字符串字面量

在ES6(ES2015)中引入,另外,它还可以具有多行文本,换句话说可以直接输出回车换行符。

1. 模板字符串和传统字符串比较

传统字符串字面量使用单引号''或者双引号"",如下所示

var str = 'hello world'; var str2 = "hello world"; 

模板字符串使用反单引号(backquote) ``,如下所示

var str3 = `hello world`; 

反单引号位置,如下图所示,英文输入状态下按下可输入

在这里插入图片描述

形式虽然有差别,但是作为字符串字面量本质上是完全等价的。

在这里插入图片描述

2. 模板字符串可以插入表达式 (重点)

语法如下

`${expression}`

简介:expression可以是任意常量、变量、函数调用。在${expression}前后,也可以有任意的其他合法的字符,例如`abc${expression}xyz`。最终,${expression} 会转化为字符串和前后的字符串拼接,如果有的话。




当没有字符串时,我们想打印一个对象的信息,只能通过字符串拼接。

var xiaoming = { 
    name: '小明', age: 14, sex: 'male' }; var bio = 'name: ' + xiaoming.name + ', age: ' + xiaoming.age + ', sex: ' + 'male'; console.log(bio); 

现在,只有三个属性,拼接字符串还可以介绍。但是,当对象的属性比较多时,拼接字符串就会很费时费力。这时,应该用模板字符串。

var xiaoming = { 
    name: '小明', age: 14, sex: 'male' }; var bio = `name: ${ 
     xiaoming.name}, age: ${ 
     xiaoming.age}, sex: ${ 
     xiaoming.sex}`; console.log(bio); 

在这里插入图片描述

在这里插入图片描述

3. 模板字符串可以有多行文本

可以直接在``中输入回车换行符

var str = `我是第一行 我是第二行` 

输出效果在这里插入图片描述

这在传统字符中是不允许的,直接插入换行符

JavaScript会报错:

在这里插入图片描述

输出效果

在这里插入图片描述
这时,你只能把代码中的缩进字符删除,但是会影响代码的可读性,得不偿失。但是如果字符串中时html标签,最终要插入到dom树中,缩进的字符会因为html的空白折叠现象忽略,因此可以使用。如果单纯再代码中使用字符串,完全没必要使用这个功能,简直是一种鸡肋的存在。

二、学生信息加载demo

一个小demo,练习下模板字符串的使用

代码如下:

 
     DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document 
       title> <style> span { 
         font-weight:bold; }  
        style>  
         head> <body> <h1>学生信息列表 
          h1> <ul id="list"> <li id='info'>信息加载中... 
           li>  
            ul> <script> const students = [ { 
              name: 'Alice', age: 20, sex: 'famale' }, { 
              name: 'Jimmy', age: 15, sex: 'male' }, { 
              name: 'xiaoxiao', age: 23, sex: 'female' } ]; const list = document.querySelector('#list'); let index = 0; const printTimer = setInterval(()=>{ 
              if (index >= students.length) { 
              clearInterval(printTimer); document.getElementById('info').innerText = '信息加载完毕!'; } let liNode = document.createElement('li'); liNode.innerHTML = `name: ${ 
               students[index].name}, age: ${ 
               students[index].age}, sex: ${ 
               students[index].sex}`; list.appendChild(liNode); index ++; }, 2000)  
             script>  
              body>  
               html> 


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

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

(0)
上一篇 2026年3月18日 下午5:49
下一篇 2026年3月18日 下午5:50


相关推荐

  • IDEA热部署详解

    IDEA热部署详解IDEA 热部署 一 解析关键配置 本编博客转载自 因为自己在研究热部署 包括热部署那些文件 部署实现的包括那些操作 这一块 所以这篇好博客 http www mamicode com info detail 1699044 html 一 war 和 exploed 区别 OnUpateActio 与 OnFrameDeact nbsp 这两个选项的设置 依赖

    2026年3月17日
    2
  • 关于AjaxPro用法[通俗易懂]

    关于AjaxPro用法[通俗易懂]特点是前后台传输数据特别方便,可以直接跟后台方法进行访问,中间用数据JASON数据传输这一切她都已经帮你做了。一、配置AjaxPro:1.下载AjaxPro.2.dll并添加到工程里,如图:在web.config中添加注册信息在后台Page_Load注册下,如下图:这样就配置好了。二、后台代码:[AjaxPro.AjaxMethod]加上此标记,前台可以直接调用此方法三、

    2022年7月12日
    13
  • 管理sql server表数据_sql server如何使用

    管理sql server表数据_sql server如何使用表是SQL Server中最基本的数据库对象,用于存储数据的一种逻辑结构,由行和列组成, 它又称为二维表。例如,在学生成绩管理系统中,表1–是一个学生表(student)。(1)表表是数据库中存储数据的数据库对象,每个数据库包含了若干个表,表由行和列组成。例如,表1–由6行6列组成。(2)表结构每个表具有一定的结构,表结构包含一组固定的列,由数据类型、长度、允许Null值等组成…

    2022年8月18日
    16
  • 数据库三大范式详解

    数据库三大范式详解文章目录数据库三大范式一 范式的定义二 第一范式 1NF 1 关系和关系模式的概念 2 第一范式的概念 3 第一范式存在的问题三 第二范式 2NF 1 理解几个概念 1 1 函数依赖 1 2 完全函数依赖 1 3 部分函数依赖 1 4 传递函数依赖 1 5 码 1 6 主属性 1 7 非主属性 2 第二范式的概念 3 1NF 转换为 2NF 的方式 4 第二范式存在的问题四 第三范式 3NF 1 第三范式的概念 2 2NF 转换为 3NF 的方式 3 第三范式的优势数据库三大范式一 范式的定义设计数据库表时所要遵

    2026年3月18日
    2
  • Mina框架的使用[通俗易懂]

    什么是Mina框架ApacheMina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。它通过Javanio技术基于TCP/IP和UDP/IP协议提供了抽象的、事件驱动的、异步的API。是用来代替NIO网络框架的,对NIO框架进行了一层封装的Socket库。Mina主页下载地址为什么使用Mina?传统socket:阻塞式通信每建立一个Socket连接时,同时创建一个新线程对该Soc

    2022年4月17日
    95
  • 零基础学Java(12)静态字段与静态方法

    零基础学Java(12)静态字段与静态方法静态字段与静态方法之前我们都定义的main方法都被标记了static修饰符,那到底是什么意思?下面我们来看看静态字段如果将一个字段定义为static,每个类只有一个这样的字段。而对于非静态的实例

    2022年8月7日
    6

发表回复

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

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