ES6(ECMAScript 6)新特性之模板字符串用法分析


Posted in Javascript onApril 01, 2017

本文实例讲述了ES6(ECMAScript 6)新特性之模板字符串用法。分享给大家供大家参考,具体如下:

ES6引入了一种新型的字符串字面量语法,我们称之为模板字符串(template strings)。除了使用反撇号字符 ` 代替普通字符串的引号 ' 或 " 外,它们看起来与普通字符串并无二致。在最简单的情况下,它们与普通字符串的表现一致:

context.fillText(`Ceci n'est pas une cha?ne.`, x, y);

但我们不能说:“原来只是被反撇号括起来的普通字符串啊”。模板字符串为JavaScript提供了简单的字符串插值功能,从此以后,你可以通过一种更加美观、更加方便的方式向字符串中插值了。这在Java和C#中早已经有了,不用再用 + 符号连接字符串,用起来很方便~

模板字符串的使用方式成千上万,但最让我暖心的是将其应用于毫不起眼的错误消息提示:

function authorize(user, action) {
  if (!user.hasPrivilege(action)) {
    throw new Error(
    `用户 ${user.name} 未被授权执行 ${action} 操作。`);
  }
}

在这个示例中,${user.name}${action} 被称为模板占位符,JavaScript将把user.name和action的值插入到最终生成的字符串中,例如:用户jorendorff未被授权打冰球。(这是真的,我还没有获得冰球许可证。)

到目前为止,我们所了解到的仅仅是比+运算符更优雅的语法,下面是你可能期待的一些特性细节:

模板占位符中的代码可以是任意JavaScript表达式,所以函数调用、算数运算等这些都可以作为占位符使用,你甚至可以在一个模板字符串中嵌套另一个,我称之为模板套构(template inception)。

如果这两个值都不是字符串,可以按照常规将其转换为字符串。例如:如果action是一个对象,将会调用它的.toString()方法将其转换为字符串值。

如果你需要在模板字符串中书写反撇号,你必须使用反斜杠将其转义:`\``等价于"`"。

同样地,如果你需要在模板字符串中引入字符$和{。无论你要实现什么样的目标,你都需要用反斜杠转义每一个字符:`$`和`\{`。

与普通字符串不同的是,模板字符串可以多行书写:

$("#warning").html(`
  <h1>小心!>/h1>
  <p>未经授权打冰球可能受罚
   将近${maxPenalty}分钟。</p>`);

模板字符串中所有的空格、新行、缩进,都会原样输出在生成的字符串中。

希望本文所述对大家ECMAScript程序设计有所帮助。

Javascript 相关文章推荐
javascript AutoScroller 函数类
May 29 Javascript
javascript权威指南 学习笔记之变量作用域分享
Sep 28 Javascript
JS Map 和 List 的简单实现代码
Jul 08 Javascript
JQuery中form验证出错信息的查看方法
Oct 08 Javascript
使用js实现数据格式化
Dec 03 Javascript
JavaScript DOM基础
Apr 13 Javascript
jQuery插件expander实现图片翻转特效
May 21 Javascript
深入理解requestAnimationFrame的动画循环
Sep 20 Javascript
react-native之ART绘图方法详解
Aug 08 Javascript
jQuery选择器之子元素过滤选择器
Sep 28 jQuery
深入浅析js原型链和vue构造函数
Oct 25 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
Nov 13 Javascript
Linux CentOS系统下安装node.js与express的方法
Apr 01 #Javascript
原生JS实现九宫格抽奖效果
Apr 01 #Javascript
关于Node.js的events.EventEmitter用法介绍
Apr 01 #Javascript
ES6 Promise对象概念与用法分析
Apr 01 #Javascript
JavaScript中闭包的详解
Apr 01 #Javascript
基于JavaScript实现验证码功能
Apr 01 #Javascript
AngularJS1.X学习笔记2-数据绑定详解
Apr 01 #Javascript
You might like
使用PHP Socket写的POP3类
2013/10/30 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
原生js实现选项卡功能
2017/03/08 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
Vue v-bind动态绑定class实例方法
2020/01/15 Javascript
vue 判断元素内容是否超过宽度的方式
2020/07/29 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
荷兰手表网站:Watch2Day
2018/07/02 全球购物
C语言怎样定义和声明全局变量和函数最好
2013/11/26 面试题
毕业自我评价
2014/02/05 职场文书
医学生职业生涯规划书范文
2014/03/13 职场文书
新学期教师寄语
2014/04/02 职场文书
电子信息工程自荐信
2014/05/26 职场文书
群众路线领导对照材料
2014/08/23 职场文书
特此通知格式
2015/04/27 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
高中英语教学反思范文
2016/03/02 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书