ES6为字符串做了哪些扩展?

字符串与数值扩展【ES6】 字符串扩展:includes,(startsWith,endsWith),repeat 数值扩展: Number.isFinite,Number.isNaN,Number.isInteger,Number.EPSLON,Math.trunc,Math.sign 阅读详情

感觉之前看的ES6忘了许多,这两天再过一遍,加深理解。

字符串的扩展

简答说,ES6对字符串新增了一些函数和操作规范,使得开发者对字符串的操作更加方便,以往需要借助其他javascript代码才能实现的效果,现在利用这些函数即可快速实现。

新特性:模板字符串

“模板字符串”是字符串的一个新特性,传统的字符串实现拼接的时候,要将变量插入字符串中,语法是这样的,

let name = "Jacky";
let occupation = "doctor";
//传统字符串拼接
let str = "He is "+ name +",he is a "+ occupation;

上面最后一句代码实现将变量name和occupation插入字符串中,这种写法没什么不好,只是数据一旦多起来就很繁琐,你会看到N多个加号“+”,N多个引号’ “” ‘,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函数

repeat( )函数:将目标字符串重复N次,返回一个新的字符串,不影响目标字符串。

var name1 = "前端君";  //目标字符串
var name2 =  name1.repeat(3);
//变量name1被重复三次;
console.log(name1); 
//结果:前端君
console.log(name2);
//结果:前端君前端君前端君

重复3次后返回一个新字符串赋值给name2,name1不受影响,所以name1的值不变。

新特性:includes函数

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),况且我们并不关心子字符串出现的位置。
注意,上面最后一句代码,第二个参数为1,表示从第2个字符“端“开始搜索,第一个字符”前“的位置是0;

新特性:startsWith函数

startsWith( )函数:判断指定的子字符串是否出现在目标字符串的开头位置,第二个参数选填,表示开始搜索的位置。

var name = "前端君";  //目标字符串
name.startsWith('前'); 
//true,出现在开头位置
name.startsWith('端'); 
//false,不是在开头位置
name.startsWith('端',1); 
//true,从第2个字符开始

我们如果判断字符串是否以某个子字符串开头,就可以直接使用startsWith( )函数即可,同样,第二个参数为1表示从第2个字符开始搜索。若要从第一个字符开始搜索,参数应该为0或者为空(默认从第一个字符开始搜索)。

新特性:endsWith函数

endsWith( )函数:判断子字符串是否出现在目标字符串的尾部位置,第二个参数选填,表示针对前N个字符。

var name = "我就是前端君";    //目标字符串
name.endsWith('我');
//false,不在尾部位置

name.endsWith('君'); 
//true,在尾部位置

name.endsWith('君',5); 
//false,只针对前5个字符

name.endsWith('君',6);
//true,针对前6个字符

总结:

ES6给字符串带来了很多实用性的扩展:模板字符串,标签模板,repeat函数、includes函数,startsWith函数,endsWith函数,

ES6提供了多种方法来截取字符串的后几位。在本篇文章中,我们将介绍两种常用的方法:使用`slice()`函数和使用负数索引。 函数是JavaScript字符串对象的方法,它可以从原始字符串中提取出指定位置的子字符串。当我们想要截取字符串的后几位时,可以使用负数作为参数传递给。函数,我们还可以使用负数索引来截取字符串的后几位。在JavaScript中,字符串可以像数组一样被索引,其中负数索引表示从字符串的末尾开始计数。函数,我们实际上是告诉它从字符串的末尾开始计数。计算出从字符串末尾开始的索引位置,然后传递给。函数和负数索引来截取字符串的后5位字符。在上面的代码中,我们定义了一个字符串。在上面的代码中,我们使用。 阅读详情

相关推荐

RT-Thread Studio与CubeMX联合编程(超级详细)

RT-Thread Studio与CubeMX联合编程 本文章参考以下文章: https://blog.youkuaiyun.com/qq_40824852/article/details/122596043 https://zhuanlan.zhihu.com/p/395106066 https://blog.youkuaiyun.com/m0_37697335/article/details/108890584 一、简介 经过上次对RT-Thread Studio的初步尝试,发现RT-Thread Studio中存在官方支

zhuzhu的博客 3万+

ES6数组和字符串方法

1.字符串的两种创建方式 字符串的两种创建方式:字符串字面量,字符串对象。 通过字符串字面量创建字符串:其typeof后类型是string //字符串字面量 var str1 = "kaikeba"; console.log("字符串str1:"+str1); console.log("字符串str1的类型"+(typeof str1)...

黎小小的博客 3937

图像传感器与信号处理——SFR算法/ISO 12233解读

图像传感器与信号处理——SFR算法图像传感器与信号处理——SFR算法1. 前言2. 基于视觉的分辨率测量方法3. 基于边界的SFR算法4. 基于正弦波的SFR算法 图像传感器与信号处理——SFR算法 SFR的全称是Spatial Frequency Response,空间频率响应。介绍SFR算法的参考文献主要是ISO 12233这篇英文文档。和读一般的论文感觉不同,文档读起来更加晦涩难懂,可能是因...

weixin_44580210的博客 1万+

ES6字符串拼接、字符串常用方法、math数学函数方法

常规拼接字符串繁琐,不便捷ES6新规可以使用反引号`来拼接${${${${}里面存放变量,方便快捷。

lawfy的博客 1192

Ubuntu下OpenOCD+GDB的安装、编译及使用

目标开发板(芯片):stm32mp157aaa 仿真器:ST-Link 操作系统:Ubuntu 18.04 调试软件:OpenOCD OpenOCD的安装 首先下载OpenOCD有多种方式,可以GitHub上下载,目录下打开终端,输入 git clone git://git.code.sf.net/p/openocd/code openocd 下载完整的OpenOCD的文件夹。进入到OpenOCD的目录下,开始安装。 接着,OpenOCD适用于微处理器的debug和烧写,需要下载相关库 sud

蓝冰露的博客 9525

Prompt Airlines CTF通关实战:从提示词注入到多模态攻击的AI安全攻防演练

提示词注入(Prompt Injection)是当前大语言模型(LLM)应用面临的核心安全威胁之一,其原理在于攻击者通过精心构造的用户输入,覆盖或绕过系统预设的指令,从而操控模型行为。这种攻击手法的技术价值在于揭示了AI系统在理解与执行指令时存在的逻辑边界模糊性,可能导致数据泄露、越权访问等严重风险。在应用场景上,从基础的客服对话到结合视觉识别的多模态系统,都可能成为攻击面。本文以一场名为“Prompt Airlines CTF”的实战挑战为例,深入剖析了包括指令遗忘、上下文注入、工具调用滥用及多模态提示注

aodan5477的博客 523

字符串方法+ES6中字符串的方法

// "abc"分析:上面代码中,变量s1是字符串,s2是对象。由于s2是字符串对象方法返回的就是它所对应的原始字符串。字符串对象是一个类似数组的对象(很像数组,但不是数组)。// "b"

weixin_47075145的博客 4223

UWB定位进阶:如何利用DW1000的CIR数据做NLOS信号识别?

本文深入探讨了如何利用DW1000芯片的信道脉冲响应(CIR)数据进行非视距(NLOS)信号识别,以提升UWB定位精度。通过分析CIR数据的核心价值、预处理方法、特征提取技术以及机器学习模型构建,为研究人员和工程师提供了实用的解决方案,帮助克服室内定位中的NLOS挑战。

weixin_28729205的博客 474

积累篇-(es6解构,截取字符串方法,v-for循环渲染)

一.es6解构 基础概念:对数组或者对象进行模式匹配,然后对其中变量进行赋值,方便复杂对象中数据字段获取 参与对象:等号左边解构目标 解构源,在右边 1.基本使用 .1.let [a,[[b]],c] = [1,[[2]],3] a=1 ,b=2,c=3 确保左边接受数据的变量类型和右边一样即可 2.当需要拿大量源数据时候 let [a, ,b]=[1,2,3] 3.不完全结构(我还没用到过) let [a = 1,b]=[] a=1,b=undifiend 4.使用剩余运算符 let

小小·程序媛 2885

车载以太网测试-1【TC8物理层测试基础】

车载以太网物理层是车载网络的基础,负责将数字数据转换为适合在物理介质上传输的信号,并确保数据传输的可靠性、稳定性和高效性。它在车载网络系统中扮演着至关重要的角色,直接影响着车辆内部通信的性能和效率。1. 主要物理层标准车载以太网标准由IEEE 802.3和标准名称速率线缆类型编码方式应用场景100BASE-T1100 Mbps单对非屏蔽双绞线车载摄像头、传感器1 Gbps单对屏蔽/非屏蔽双绞线自动驾驶域控制器、高清视频10BASE-T1S10 Mbps单对双绞线幅移键控(ASK)

车载网络测试工程师的博客 4393

【思考模型框架】前景理论(Prospect Theory),认为人们并不是完全理性的决策者,而是根据一些心理上的偏差来评估选项的价值

前景理论,是一种行为经济学理论。前景理论,描述了人们在不确定条件下如何作出决策。前景理论,认为人们并不是完全理性的决策者,而是根据一些心理上的偏差来评估选项的价值。

奶爸的编程之路,也就一周冷个三天 1644

ES6:字符串的扩展

函数的第一个参数是一个数组,该数组的成员是模板字符串中那些没有变量替换的部分,也就是说,变量替换只发生在数组的第一个成员与第二个成员之间、第二个成员与第三个成员之间,以此类推。上面代码中,模板字符串原本是应该报错的,但是由于放松了对字符串转义的限制,所以不报错了,JavaScript 引擎将第一个字符设置为。但是,如果模板字符里面有变量,就不是简单的调用了,而是会将模板字符串先处理成多个参数,再调用函数。注意,这种对字符串转义的放松,只在标签模板解析字符串时生效,不是标签模板的场合,依然会报错。

DZQ1223的博客 676

07RK3568 I2S主模式 FPGA

RK3568与fpga通过i2s0连接,fpga连接音频芯片ES8388,RK为i2s主模式。调试时发现可正常采集来自fpga的数据。不可发送数据至fpga。由于i2s后连接fpga这里用了Rockchip的dummy-codec,一个虚拟的编解码器。

qq_39451352的博客 304

B站小马哥ES6(一)

ES6学习

m0_56685529的博客 1045

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

ES6(一):let和const、模板字符串、函数默认值、剩余参数、扩展运算符、箭头函数

let和const、模板字符串、函数默认值、剩余参数、扩展运算符、箭头函数

weixin_57276614的博客 285

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

es6 字符串的扩展

字符串的扩展传统的字符串拼接模板字符串标签模板ES6字符串String类扩展函数 传统的字符串拼接 var str1 = "小白"; var str2 = "hello"; var str3 = "world"; console.log(str1 + "说:" + str2 +","+ str3); //小白说:hello,world 普通字符串的拼接不包含空格和换行 var st...

Hassan的小博客! 900

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ES6基础-ES6的扩展

进行对字符串扩展,正则扩展,数值扩展,函数扩展,对象扩展,数组扩展。 开发环境准备: 编辑器(VS Code, Atom,Sublime)或者IDE(Webstorm) 浏览器最新的Chrome 字符串的扩展: 模板字符串,部分新的方法,新的unicode表示和遍历方法: 部分新的字符串方法 padStart,padEnd,repeat,startsWith,endsWith,includes 字...

程序员哆啦A梦,蓝胖子 5069

ES6之字符串的扩展

TOC/TOC。

BradenHan的专栏 968

(3)ES6 字符串的扩展

上面代码中,模板字符串原本是应该报错的,但是由于放松了对字符串转义的限制,所以不报错了,JavaScript 引擎将第一个字符设置为 undefined ,但是 raw 属性依然可以得到原始字符串,因此 tag 函数还是可以对原字符串进行处理。tag 函数的第一个参数是一个数组,该数组的成员是模板字符串中那些没有变量替换的部分,也就是说,变量替换只发生在数组的第一个成员与第二个成员之间、第二个成员与第三个成员之间,以此类推。上面代码中,所有模板字符串的空格和换行,都是被保留的,比如 标签前面会有一个换行。

java程序员的蜕变之路 1131

ES6之对象的扩展

TOC?/TOC。

BradenHan的专栏 1309

ES6_字符串的扩展

本文介绍ES6对字符串的改造和增强。

Joyce的博客 934

Javascript-ES6扩展写法

String类在ES6indexOf():从某个位置左往右或从右往左查找字串索引。endsWith():查找是否以某个字符串开头或结尾。Includes():从某个位置开始,判断字符串是否为子串。扩展运算符两种创建数组的方法:Array.of()方法:将一组指定的值转换为数组。方法:将类数组对象或者可迭代对象转换为数组。六种数组查找方法:indexOf()方法:查找指定元素的下标值。find()findLast()方法:返回数组中满足指定条件的元素的值,未找到则返回undefined。

一个前端人,游戏开发魂。 762

ES6个人笔记记录——字符串扩展

关于ES6的一些学习笔记 // console.log("\u0061"); console.log("\uD842\uDF02"); let s1 = "好"; console.log("好",s1.length); let s = "????"; console.log(s,s.length,s.charAt(0),s.charAt(1),s.charCodeAt(0),s.charCodeAt(1...

whmJack的博客 7万+

ES6中字符串的扩展

ES6中字符串的扩展Unicode表示法模板字符串ES6中字符串的扩展方法String.prototype.fromCodePoint()String.prototype.includes()String.prototype.startsWith()String.prototype.endsWith()String.prototype.repeat() Unicode表示法 ES6 加强了对 Unicode 的支持,允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点。 "\u

weixin_44011306的博客 327

【es6字符串、数组、对象的扩展】

在es6中我们有很多简单好用的方法,这篇文章将会概述字符串、数组、对象的扩展功能。

2401_84341509的博客 761
上一篇: Node.js建站之安装express(一)
下一篇: Node.js建站之详解express与ejs(二)
Hi-ZhiWei
博客等级 码龄10年 3粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值