es6中的模版字符串替代了原有的字符串拼接功能。

字符串拼接

es5方式

传统的字符串拼接在变量的左右两侧都要有+号连接。

let  name  =  '张三';
let age = 9;
let str = '我的名字叫' + name + '我今年' + age + '岁了';
console.log(str)//我的名字叫张三我今年9岁了

如果你还想在这个字符串中加入空格回车或者其他的特殊字符,那代码就变得更难以维护,因为还需要加入转义字符才能正常显示。看下面的例子:

//我的名字叫'张三'我今年9岁了
let name = '张三';
let age = 9;
let str = '我的名字叫\'' + name + '\'我今年' + age + '岁了';
console.log(str)

es6方式

还是同样的代码,我们用es6的模版字符串形式就变得容易多了。模版字符串的开始和结束不再使用引号包裹,而是使用‘`’,变量也采用了‘${变量名}’的方式,省去了拼接时的加号和特殊字符的转义。

let  name  =  '张三';
let age = 9;
// let str = '我的名字叫\'' + name + '\'我今年' + age + '岁了';
let str = `我的名字叫'${name}'我今年${age}岁了`
console.log(str)

而在常用需求中使用的换行回车也可以直接使用而不需要再进行拼接。

let  name  =  '张三';
let age = 9;
let str=`<ul>
<li>${name}<li>
<li>${age}<li>
</ul>`
console.log(str);
/*
<ul>
<li>张三<li>
<li>9<li>
</ul>
*/

自定义标签的模版字符串

在日常工作处理中,经常会遇到在每个变量之间加一个标识的需求。如下面的例子

  • let name = '张三';let age = 9;
  • 我的名字叫张三我今年9岁了
  • 我的名字叫**张三**我今年**9**岁了

上面的案例中,在变量name和age的左右两侧都加入了两个星号,这个时候自定义模版字符串标签就能够很好的解决上面的问题了。

  • 首先要在模版字符串的前面放一个函数名,这个函数就是用来自定义标签的方法名
let  str  =  strfun`我的名字叫${name}我今年${age}岁了`;//strfun是个方法
  • 然后用这个函数返回一个新的字符串,这个字符串就是你处理的结果,他会覆盖str原来的值
let  name  =  '张三';
let age = 9;
function ni() {
var strs = arguments[0];
var vals = [].slice.call(arguments, 1)
//console.log(strs, vals)
var str = '';
for (var i = 0; i < vals.length; i++) {
str += strs[i] + "**" + vals[i] + "**";
}
str += strs[strs.length - 1];
return str;
}
let str = ni`我的名字叫${name}我今年${age}岁了`;
console.log(str);

其中接收到的参数是一个数组加上一个类数组的字符串,第一个数组是除了变量名之外的内容,后面的内容是变量名。

includes()

查找一个字符串中是否包含某个字符。

let  str  =  '我的名字叫张三我今年9岁了';
console.log(str.includes('名字'))//true

startsWith()

判断是不是以某个字符开头。

let  str  =  '我的名字叫张三我今年9岁了';
console.log(str.startsWith('名字'))//false

endsWith()

判断是不是以某个字符结尾的

let  str  =  '我的名字叫张三我今年9岁了';
console.log(str.endsWith('名字'))//false

padStart()

字符串补全。按照一定的字符串长度进行补全,补全内容放在字符串前面

//在字符串h的前面补0,成为一个length为2的字符串。
let h = '1';
console.log(h.padStart(2, 0))//01

es6中的模版字符串的更多相关文章

  1. es6语法之模版字符串

    //es6语法之`${}`以及vue语法 `${ }` (模版字符串)const name = '小缘' const age = 14 console.info(`大家好,我叫${name},今年${ ...

  2. ES6中的模板字符串和新XSS Payload

    ES6中的模板字符串和新XSS Payload 众所周知,在XSS的实战对抗中,由于防守方经常会采用各种各样严格的过滤手段来过滤输入,所以我们使用的XSS Payload也会根据实际情况作出各种各样的 ...

  3. es6 中的 模板字符串

    Template literals are string literals allowing embedded expressions. You can use multi-line strings ...

  4. ES6中的模板字符串使用方法

    传统的 JavaScript 语言,输出模板通常是这样写的. $('#result').append( 'There are <b>' + basket.count + '</b&g ...

  5. ES6中新增的字符串方法

    实例方法:includes(), startsWith(), endsWith() 传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中.ES6 又提供 ...

  6. ES6中的模板字符串---反引号``

    在react中,反引号``有特殊的含义. 如MDN中所述,模板字符串(Template literals)允许嵌入表达式,并且支持多行字符串和字符串插补特性.基本语法为以下几种: 其中第一行为最基本用 ...

  7. ES6中比较实用的几个特性

    1.Default Parameters(默认参数) in ES6 es6之前,定义默认参数的方法是在一个方法内部定义 var link = function (height, color, url) ...

  8. es6学习笔记--模板字符串

    这几天简单看了一下深入浅出es6这本书,感觉特实用,学习了一个新特性---模板字符串在项目开发中,拼接字符串是不可缺少的,动态创建dom元素以及js操作数据都要拼接字符串,在es6出来之前,我们都通常 ...

  9. es6中的部分新特性

    1.es6中变量声明可以使用let声明变量,用const声明常量.例: test:function(){ { var num=10; let num1=11; const num2=12; } con ...

随机推荐

  1. BZOJ 2462 [BeiJing2011]矩阵模板 矩阵哈希

    昨天卡了一天常数...然后发现吧$unsigned\space long\space long$改成$unsigned$就可以过了$qwq$ 先把每一行的前缀哈希求出,然后再竖着把每个前缀哈希值哈希起 ...

  2. 非局部均值去噪(NL-means)

    非局部均值(NL-means)是近年来提出的一项新型的去噪技术.该方法充分利用了图像中的冗余信息,在去噪的同时能最大程度地保持图像的细节特征.基本思想是:当前像素的估计值由图像中与它具有相似邻域结构的 ...

  3. Java面向对象_抽象类应用——模板方法模式

    概念:定义一个操作中的算法的骨架,而将一些可变部分的实现延迟到子类中.模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤. 去个例子分析一下这个概念: public cla ...

  4. Storm概念学习系列之Storm与Hadoop的角色和组件比较

    不多说,直接上干货! Storm与Hadoop的角色和组件比较 Storm 集群和 Hadoop 集群表面上看很类似.但是 Hadoop 上运行的是 MapReduce 作业,而在 Storm 上运行 ...

  5. UICollectionView基础API笔记

    UICollectionView系列API,属性含义笔记.在UICollectionView笔记1中我们了解了UICollectionView是什么,以及可以做什么:在UICollectionView ...

  6. C 碎片四 流程控制

    前面介绍了程序中用到的一些基本要素(常量,变量,运算符,表达式),他们是构成程序的基本成分,下面将介绍C语言中流程控制的三种结构:顺序结构.分支结构.循环结构 一.顺序结构 顺序结构的程序设计是最简单 ...

  7. hibernate课程 初探单表映射3-4 组件属性

    本节内容: 1 简介组件属性 2 demo 1 简介组件属性: <component name = "address" class = "Address" ...

  8. 2013 QConf上海软件开发大会总结

    带着工作中的一些疑问,我参加了在上海举办的QConf 全球软件开发大会.会议以主题的形式按分会场召开,我主要选择知名网站案例分析.大数据处理技术.高效能团队建设和金融系统架构与设计四个主题内容.三天会 ...

  9. cout格式化输出 详解

    //在使用setf等库函数时使用 //在使用流操纵算子时使用 //using namespace std; //以下所有的setf()都有对应的unsetf()用于取消设置 //所有的setiosfl ...

  10. Android仿微信高效压缩图片(libjpeg)

    用过ios手机的同学应该很明显感觉到,ios拍照1M的图片要比安卓拍照排出来的5M的图片还要清晰.这是为什么呢? 这得了解android底层是如何对图片进行处理的. 当时谷歌开发Android的时候, ...