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. 求最短路径(Bellman-Ford算法与Dijkstra算法)

    前言 Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的.这时候,就需要使用其他的算法来求 ...

  2. 常见的web性能优化方法

    前言:关于优化问题,随着项目经验不断累积,多方查找资料进行拼接合并,形成如下文章,之后遇到类似好的方法,会不断补充完善. 前端是庞大的,包括 HTML. CSS. Javascript.Image . ...

  3. 019 Remove Nth Node From End of List 删除链表的倒数第N个节点

    给定一个链表,删除链表的倒数第 n 个节点并返回头结点.例如,给定一个链表: 1->2->3->4->5, 并且 n = 2.当删除了倒数第二个节点后链表变成了 1->2 ...

  4. Floyed-Warshall算法(求任意两点间最短距离)

    思路:感觉有点像暴力啊,反正我是觉得很暴力,比如求d[i][j],用这个方法求的话,就直接考虑会不会经过点k(k是任意一点) ,最终求得最小值 看代码 #include<iostream> ...

  5. Linux Bash 命令行快捷键小结

    编辑命令          光标移动                                                                        剪切.删除 Ctrl ...

  6. jQuery 结构的实现思路

    前提: 使用 JS 创建对象的最优办法,是 原型模式.   step1: 原型模式的基础使用方式     function fn(){}     fn.prototype = {}       var ...

  7. Java学习笔记--关于面向对象的思考

    1.不可改变的类生成对象以及变量的范围 2. 关键词this的使用 3.用类抽象的思想制作软件 4.通过关系模型建立类 5.使用面向对象的范例来设计程序,遵循类设计指导. 已经学习了:怎么定义类已经创 ...

  8. Linux下安装软件遇见的问题汇总

    1.安装monodevelop 安装环境Linux Mint17.1 在软件在中心直接安装monodevelop,安装完成后直接启动界面“一闪而过”,解决办法: 软件中心安装 mono-complet ...

  9. linux解压与参数介绍

    linux下 各种解压文件使用方法:https://www.jianshu.com/p/ca41f32420d6 解压参数详解:http://www.cnblogs.com/jyaray/archiv ...

  10. iOS多线程系统整理 swift

    多线程   是一个应用程序内多个代码的执行路径,执行线程,同时在同一时间里执行不同的任务. 三种: 1.NSTread 2.Cocoa NSOperation (NSOperation,NSOpera ...