模板字面量可以理解成是字符串的一种,形式上用反引号 `` 将内容括起来。

目录

特点一:模板字面量会保留反引号内部的空格、回车、tab,会将\n,\t翻译。

特点二:支持字符串插值

特点三:和标签函数搭配食用


特点一:模板字面量会保留反引号内部的空格、回车、tab,会将\n,\t翻译。

//展示保留空格、回车,翻译\n

let templateLiteral = `    当时共客长安。\n似二陆初来俱少年。`;

console.log(templateLiteral);

结果

可见 4个空格被保留,\n被翻译。

顾名思义,模板字面量在定义模板时特别有用,比如

//展示html模板

let htmlTemplate = `

<div>

<a href='#'>

<span>行步至春深</span>

</a>

</div>`;

console.log(htmlTemplate);

控制台输出

当然,如果想要保留\n,\t也是完全可以的~

只需调用String.raw函数

let templatedStr = `\t海绵宝宝和派大星永远是好朋友\n!`;

console.log(String.raw`\t海绵宝宝和派大星永远是好朋友\n!`);

控制台输出

特点二:支持字符串插值

也就是可以直接在反引号内应用${}的格式把变量值取出来,和其他内容合并成字符串(一对引号搞定拼接)

//展示模板字面量支持字符串插值

let subject = 'knowledge';

let predicative = 'power';

let interpolatedString = `${subject} is ${predicative} ~`;

console.log(interpolatedString);

控制台输出

而且${}内的值可以是自身

//展示模板字面量支持字符串插值

let subject = 'knowledge';

let predicative = 'power';

let interpolatedString = `${subject} is ${predicative} ~`;

console.log(interpolatedString);

interpolatedString = `Now I understand,${interpolatedString}`;

console.log(interpolatedString);

控制台输出

${}内还可以调用方法

//展示模板字面量支持字符串插值,并调用方法

let begin = 'now I understand,';

let interpolatedString = `${begin.toUpperCase()}what you said to me.`;

console.log(interpolatedString);

控制台输出

特点三:和标签函数搭配食用

标签函数的特点:

①接收的第一个参数是被插值分隔的字符串数组

比如

如果传入

`${a}+${b}=${a+b}`

函数的第一个实参是

['','+','=','']

这个字符串数组一共有4个元素,依次为空字符串、加号、等号、空字符串。

可以看出,对于有n个插值的模板字面量,标签函数的第一个参数接收到的字符串数组的大小是n+1。

②接收的参数从第二个开始都是插值的实际值

③可以之间用函数名+模板字面量的形式调用

let name1 = 'SpongeBob';

let name2 = 'Patrick';

let templatedStr = `${name1}和${name2}永远是好朋友`;

function tagFun(strArr,insert1,insert2){

console.log(strArr);

console.log(insert1);

console.log(insert2);

}

tagFun`${name1}和${name2}永远是好朋友`;

控制台输出

那么标签函数有什么用呢?

例:styled-components 就是通过 Tag 函数来给 React 和 ReactNative 设置 CSS 样式。

详见:https://styled-components.com/

参考:

1.《JavaScript高级程序设计(第四版)》 Matt Frisbie

2. ES6 - 标签函数

ECMAScript 6 模板字面量的常见用法相关推荐

  1. JavaScript模板字面量(Template literals)介绍

    JavaScript模板字面量(Template literals)介绍 模板字面量(Template literals)是什么? 简单地说,是允许嵌入表达式的字符串字面量.在反引号中可以直接使用单引 ...

  2. JS模板字面量标签函数

    定义 标签函数 会接收被插值记号分隔后的模板和对每个表达式求值的结果. 标签函数本身是一个常规函数,通过前缀到模板字面量来应用自定义行为. 标签函数 接收到的参数依次是原始字符串数组和对每个表达式求值 ...

  3. 【精讲】Javascript模板字面量

    文章目录 模板字面量是什么? 将模板字面量传入函数(带标签的模板字符串) 第一个参数 其他参数 如何将模板字面量输出为完整字符串呢? 模板字面量是什么? 模板字面量,是允许嵌入表达式的字符串字面量. ...

  4. 模板字面量(模板字符串)

    模板字面量是创建字符串的新字面量语法,使用反引号(`)来分界.有三种特性: 插值,多行和标记. 插值 使用占位符${expression} 将动态值放入创建的字符串中. let name = &quo ...

  5. 工作84:模板字面量

  6. JS:关于JS字面量及其容易忽略的12个小问题

    简要 问题1:不能使用typeof判断一个null对象的数据类型 问题2:用双等号判断两个一样的变量,可能返回false 问题3:对于非十进制,如果超出了数值范围,则会报错 问题4:JS浮点数并不精确 ...

  7. js之字面量、对象字面量的访问、关键字in的用法

    一:字面量含义 字面量表示如何表达这个值,一般除去表达式,给变量赋值时,等号右边都可以认为是字面量. 字面量分为字符串字面量(string literal ).数组字面量(array literal) ...

  8. php字面量,浅谈js之字面量、对象字面量的访问、关键字in的用法

    一:字面量含义 字面量表示如何表达这个值,一般除去表达式,给变量赋值时,等号右边都可以认为是字面量. 字面量分为字符串字面量(string literal ).数组字面量(array literal) ...

  9. 字面量方式和new方式的区别及用法

    一 - 字面量方式和new方式 ☛每次创建数组或对象的时候,都能用以下两种方法创建:咦?有什么区别呢?还有哪些可以有这两种方法呢?我到底用哪一种呢? var arr = [];//字面量方法创建数组 ...

最新文章

  1. java中源代码的类_java中源代码功能了解
  2. Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法
  3. 拥有懂需求的云计算供应商,是一种怎样的体验
  4. Python编程基础:第四十节 类变量Class Variables
  5. 【待继续研究】解析机器学习技术在反欺诈领域的应用
  6. EOS资源模型(1)资源说明
  7. Key usage extensions and extended key usage
  8. 同级选择器_基础选择器
  9. Nginx——安装详解
  10. 《每日一剂》适配器刷新报错adapter.notifyDataSetChanged()解决
  11. android app启动图标在哪里设置_APP启动图标设计方法!
  12. MATLAB获取系统时间
  13. Java 使用Modsim32进行modbus-tcp协议模拟(从机)并使用java当做主机(Maven项目)进行从机信息获取及修改
  14. 傅里叶变换落地:离散傅里叶变换(DFT)
  15. python实现qq空间自动点赞
  16. MMD动作下载:世界第一公主殿下 World Is Mine Project DIVA
  17. Post-processing of merged bean definition failed; spring cloud Eureka 启动报错
  18. python正则查找_python正则匹配
  19. 史上最全的程序员求职渠道总结
  20. Android无埋点数据收集SDK关键技术解析

热门文章

  1. 苹果禁止使用热更新 iOS开发程序员新转机来临
  2. iOS 设置UILabel 的行间距
  3. HDFS的shell和API操作
  4. postfix邮箱服务
  5. CDN全站加速助力企业云上升级
  6. Elasticsearch的前后台运行与停止(rpm包方式)
  7. ISA---不能访问网址或是多次刷新才能访问的解决方法一则
  8. clientdataset 用法
  9. WEB攻击手段及防御第2篇-SQL注入
  10. org.apache.ibatis.binding.BindingException: Type interface XXX is not known to the MapperRegistry.