es6 字符串String的扩展(实例讲解)
发布时间 - 2026-01-11 02:37:14 点击率:次新特性:模板字符串

传统字符串
let name = "Jacky"; let occupation = "doctor"; //传统字符串拼接 let str = "He is "+ name +",he is a "+ occupation;
es6简洁的字符串拼接
let name = "Jacky";
let occupation = "doctor";
//模板字符串拼接
let str = `He is ${name},he is a ${occupation}`;
对比两段拼接的代码,模板字符串使得我们不再需要反复使用双引号(或者单引号)了;而是改用反引号标识符(`),插入变量的时候也不需要再使用加号(+)了,而是把变量放入${ }即可。
使用时要注意
1、可以定义多行字符串
传统的多行字符串写法:
let str = "write once ," + "run anywhere";
模板字符串的写法:
let str = `write once , run anywhere`;
直接换行即可,但是要注意的是:所有的空格和所进都会被保留在输出中。如果控制台输出字符串str的话,代码上换了行,控制台输出的时候也会换行。
2、${ }中可以放任意的javascript表达式
${ }中可以是运算表达式
var a = 1;
var b = 2;
var str = `the result is ${a+b}`;
//进行加法运算 结果:the result is 3
${ }中可以是对象的属性
var obj = {"a":1,"b":2};
var str = `the result is ${obj.a+obj.b}`;
//对象obj的属性
//结果:the result is 3.
${ }中可以是函数的调用
function fn() {
return 3;
}
var str = `the result is ${ fn() }`;
//函数fn的调用,结果:the result is 3
标签模板
这里的模板指的是上面讲的字符串模板,用反引号定义的字符串;而标签,则指的是一个函数,一个专门处理模板字符串的函数。
var name = "张三";
var height = 1.8;
tagFn`他叫${name},身高${height}米。`;
//标签+模板字符串
//定义一个函数,作为标签
function tagFn(arr,v1,v2){
console.log(arr);
//结果:[ "他叫",",身高","米。" ]
console.log(v1);
//结果:张三
console.log(v2);
//结果:1.8
}
以上代码有两处要仔细讲解的,首先是tagFn函数,是我们自定义的一个函数,它有三个参数分别是arr,v1,v2。函数tagFn的调用方式跟以往的不太一样,以往我们使用括号( )表示函数调用执行,这一次我们在函数名后面直接加上一个模板字符串,如下面的代码:
tagFn`他叫${name},身高${height}米。`;
这样就是标签模板,你可以理解为标签函数+模板字符串,这是一种新的语法规范。
接下来我们继续看函数的3个参数,从代码的打印结果我们看到它们运行后对应的结果,arr的值是一个数组:[ "他叫" , ",身高" , "米。" ],而v1的值是变量name的值:“张三”,v2的值是变量height的值:1.8。
你是否看出规律了:第一个参数arr是数组类型,它是内容是模板字符串中除了${ }以外的其他字符,按顺序组成了数组的内容,所以arr的值是[ "他叫", ",身高" , "米。" ];第2,3个参数则是模板字符串中对应次序的变量name和height的值。
标签模板是ES6给我们带来的一种新语法,它常用来实现过滤用户的非法输入和多语言转换,这里不展开讲解。因为一旦我们掌握了标签模板的用法后,以后就可以好好利用它的这个特性,再根据自己的需求要来实现各种功能了。
ES6新的String函数
repeat( )函数:将目标字符串重复N次,返回一个新的字符串,不影响目标字符串。
var name1 = "王汉炎"; //目标字符串 var name2 = name1.repeat(3); //变量name1被重复三次; console.log(name1); //结果:王汉炎 console.log(name2); //结果:王汉炎王汉炎王汉炎
includes( )函数:判断字符串中是否含有指定的子字符串,返回true表示含有和false表示未含有。第二个参数选填,表示开始搜索的位置。
var name = "王汉炎";//目标字符串
name.includes('炎');
//true, 含有
name.includes('web');
//false, 不含有
name.includes('王',1);
//false, 从第2个字符开始搜索, 不含有
传统的做法我们可以借助indexOf( )函数来实现,如果含有指定的字符串,indexOf( )函数就会子字符串首次出现的位置,不含有,则返回-1。我们通过返回值是否为-1来判断字符串中是否含有指定的子字符串,但是,我们现在可以用includes( )函数代替indexOf( )函数,因为它的返回值更直观(true或false),况且我们并不关心子字符串出现的位置。
startsWith( )函数:判断指定的子字符串是否出现在目标字符串的开头位置,第二个参数选填,表示开始搜索的位置。
var name = "王汉炎"; //目标字符串
name.startsWith('王');
//true,出现在开头位置
name.startsWith('汉');
//false,不是在开头位置
name.startsWith('汉',1);
//true,从第2个字符开始
endsWith( )函数:判断子字符串是否出现在目标字符串的尾部位置,第二个参数选填,表示针对前N个字符。
var name = "我就是王汉炎";//目标字符串
name.endsWith('我');
//false,不在尾部位置
name.endsWith('炎');
//true,在尾部位置
name.endsWith('炎',5);
//false,只针对前5个字符
name.endsWith('炎',6);
//true,针对前6个字符
javascript中,一个字符固定为2个字节,对于那些需要4个字节存储的字符,javascript会认为它是两个字符,此时它的字符长度length为2。如字符:"𠮷",就是一个需要4个字节存储,length为2的字符。这会有什么问题呢?对于4字节的字符, javascript无法正确读取字符,我们来试试看。
var str1 = "前端"; var str2 = "𠮷"; str1.length; //length为2 str2.length; //length为2 str1.charAt(0); //前 str1.charAt(1); //端 str2.charAt(0); //'�' str2.charAt(1); //'�'
可以看到,str1和str2的长度length都是2,因为字符:"𠮷"是一个4字节的字符,使用charAt函数(charAt() 方法可返回指定位置的字符)能正确读取字符串str1的字符,但无法正确读取4个字节的字符,此时返回结果出现了乱码。
但是,如果我们使用ES6给我们提供的codePointAt( )函数,就可以处理这种4个字节的字符了,我们来看看怎么使用
var str = "𠮷"; str.codePointAt(); //结果:134071
对于这个长度length为2字符:"𠮷",codePointAt( )方法可以正确地识别出它是个4个字节的字符,并且能正确地返回它的码点的十进制数:134071,这个数字抓换成16进制就是20bb7,对应的Unicode编码则是\u20bb7。
String.fromCodePoint( )函数:函数的参数是一个字符对应的码点,返回的结果就是对应的字符,哪怕这个字符是一个4字节的字符,也能正确实现。
正好可以利用上面得到的10进制数字134071反推一下。
String.fromCodePoint(134071); //结果:"𠮷"
String.raw( )函数;看函数名raw是未加工的的意思,正如这个函数的作用一样:返回字符串最原始的样貌,即使字符串中含有转义符,它都视而不见,直接输出。
console.log(`hello\nworld`); //输出:hello world console.log(String.raw`hello\nwolrd`); //输出:hello\nwolrd
总结:ES6给字符串带来了很多实用性的扩展:模板字符串,标签模板,repeat函数、includes函数,startsWith函数,endsWith函数,codePointAt函数,String.fromCodePoint函数,String.raw函数。
以上这篇es6 字符串String的扩展(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# es6
# 字符串扩展
# ES6字符串的扩展实例
# ES6中字符串的使用方法扩展
# ES6新特性之字符串的扩展实例分析
# JavaScript中ES6字符串扩展方法
# ES6基础语法之字符串扩展
# 是一个
# 他叫
# 出现在
# 第二个
# 则是
# 它是
# 给大家
# 一个函数
# 指的是
# 来实现
# 正确地
# 就可以
# 自己的
# 返回值
# 的是
# 换行
# 都是
# 以往
# 有什么
# 就会
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
Android okhttputils现在进度显示实例代码
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
智能起名网站制作软件有哪些,制作logo的软件?
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
如何在腾讯云服务器快速搭建个人网站?
JavaScript Ajax实现异步通信
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
如何在万网自助建站平台快速创建网站?
Linux后台任务运行方法_nohup与&使用技巧【技巧】
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
Laravel如何实现模型的全局作用域?(Global Scope示例)
如何快速生成可下载的建站源码工具?
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
WEB开发之注册页面验证码倒计时代码的实现
EditPlus中的正则表达式 实战(4)
高端建站如何打造兼具美学与转化的品牌官网?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
如何在服务器上三步完成建站并提升流量?
EditPlus中的正则表达式实战(6)
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
IOS倒计时设置UIButton标题title的抖动问题
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
Laravel怎么判断请求类型_Laravel Request isMethod用法
如何在阿里云购买域名并搭建网站?
Internet Explorer官网直接进入 IE浏览器在线体验版网址
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
如何快速重置建站主机并恢复默认配置?
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
微信小程序 canvas开发实例及注意事项
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
Python文件异常处理策略_健壮性说明【指导】
javascript中的try catch异常捕获机制用法分析
Laravel storage目录权限问题_Laravel文件写入权限设置
手机软键盘弹出时影响布局的解决方法
香港服务器租用每月最低只需15元?
如何快速选择适合个人网站的云服务器配置?
免费视频制作网站,更新又快又好的免费电影网站?

