【ECMAScript6_3】正则、数值、函数、数组、对象、运算符

这篇具有很好参考价值的文章主要介绍了【ECMAScript6_3】正则、数值、函数、数组、对象、运算符。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。而且,返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符。
ES5不允许第二个参数使用修饰符,

2、ES6将字符串中可以使用正则表达式的4个方法全部调用RegExp的实例方法。match()、replace()、search()和split()。
例如String.prototype.match 调用 RegExp.prototype[Symbol.match]

3、ES6增加了u修饰符,帮助识别一些编码。
ES6 还为正则表达式添加了y修饰符,叫做“粘连”(sticky)修饰符。y修饰符的作用与g修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始。
不同之处在于,g修饰符只要剩余位置中存在匹配就可,而y修饰符确保匹配必须从剩余的第一个位置开始,这也就是“粘连”的涵义。

4、具名组匹配:正则表达式使用圆括号进行组匹配。ES2018 引入了具名组匹配(Named Capture Groups),允许为每一个组匹配指定一个名字,既便于阅读代码,又便于引用。
“具名组匹配”在圆括号内部,模式的头部添加“问号 + 尖括号 + 组名”。有了具名组匹配以后,可以使用解构赋值直接从匹配结果上为变量赋值。

5、ES6 在 Math 对象上新增了 17 个与数学相关的方法。所有这些方法都是静态方法,只能在 Math 对象上调用。
Math.trunc方法用于去除一个数的小数部分,返回整数部分。
Math.sign方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。
Math.cbrt()方法用于计算一个数的立方根。
Math.imul方法返回两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32 位的带符号整数。
ath.clz32()方法将参数转为 32 位无符号整数的形式,然后返回这个 32 位值里面有多少个前导 0。
Math.fround方法返回一个数的32位单精度浮点数形式。
Math.hypot方法返回所有参数的平方和的平方根。
还包括对数方法、双曲函数方法。
ES2020 引入了一种新的数据类型 BigInt(大整数),为了与 Number 类型区别,BigInt 类型的数据必须添加后缀n。BigInt 与普通整数是两种值,它们之间并不相等。

6、ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面。参数变量是默认声明的,所以不能用let或const再次声明。
有默认值的参数都不是尾参数。这时,无法只省略该参数,而不省略它后面的参数,除非显式输入undefined。
指定了默认值以后,函数的length属性,将返回没有指定默认值的参数个数。
利用参数默认值,可以指定某一个参数不得省略,如果省略就抛出一个错误。省略时会是默认值,将默认值置为返回一个异常。

7、ES6 引入 rest 参数(形式为…变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。

8、箭头函数 :ES6 允许使用“箭头”(=>)定义函数。如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。
如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。
箭头函数没有自己的this对象,不可以当作构造函数,也就是说,不可以对箭头函数使用new命令,不可以使用arguments对象,该对象在函数体内不存在,不可以使用yield命令,因此箭头函数不能用作 Generator 函数。
箭头函数不适用场合:第一个场合是定义对象的方法,且该方法内部包括this。第二个场合是需要动态this的时候,也不应使用箭头函数。(箭头函数里的this是全局对象)

9、尾调用优化:尾调用(Tail Call)是函数式编程的一个重要概念,就是指某个函数的最后一步是调用另一个函数。
“尾调用优化”(Tail call optimization),即只保留内层函数的调用帧。可以节省内存。
类似,还有尾递归、尾逗号。

10、toString方法可以返回注释,catch命令可以不带参数。

11、扩展运算符(…)可以展开数组,由于扩展运算符可以展开数组,所以不再需要apply()方法将数组转为函数的参数了。

// ES5 的写法
Math.max.apply(null, [14, 3, 77])
// ES6 的写法
Math.max(...[14, 3, 77])
// 等同于
Math.max(14, 3, 77);

扩展运算符还可以复制数组、合并数组、与解构赋值结合、将字符串转为数组、实现了Iterator接口的对象

12、数组方法:
Array.from()方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。
Array.of()方法用于将一组值,转换为数组。这个方法的主要目的,是弥补数组构造函数Array()的不足。因为参数个数的不同,会导致Array()的行为有差异。
数组实例的copyWithin()方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。
实例方法:find(),findIndex(),findLast(),findLastIndex()
fill方法使用给定值,填充一个数组。ES6 提供三个新的方法——entries(),keys()和values()——用于遍历数组。
Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似。
Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响。参数代表要拉平几层嵌套数组。
at()方法,接受一个整数作为参数,返回对应位置的成员,并支持负索引。这个方法不仅可用于数组,也可用于字符串和类型数组(TypedArray)。
toReversed(),toSorted(),toSpliced(),with() 允许对数组进行操作时,不改变原数组,而返回一个原数组的拷贝。
group()的分组函数可以接受三个参数,依次是数组的当前成员、该成员的位置序号、原数组(上例是num、index和array)。分组函数的返回值应该是字符串(或者可以自动转为字符串),以作为分组后的组名。
groupToMap()的作用和用法与group()完全一致,唯一的区别是返回值是一个 Map 结构,而不是对象。

13、ES6允许用字面量定义对象时,使用表达式作为对象的属性名,但是要将表达式放在方括号中。对象的每个属性都有一个描述对象(Descriptor),用来控制该属性的行为。
Object.getOwnPropertyDescriptor方法可以获取该属性的描述对象。
描述对象的enumerable属性,称为“可枚举性”,如果该属性为false,就表示某些操作会忽略当前属性。

14、属性的遍历
ES6 一共有 5 种方法可以遍历对象的属性。
(1)for…in
for…in循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)。
(2)Object.keys(obj)
Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名。
(3)Object.getOwnPropertyNames(obj)
Object.getOwnPropertyNames返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)的键名。
(4)Object.getOwnPropertySymbols(obj)
Object.getOwnPropertySymbols返回一个数组,包含对象自身的所有 Symbol 属性的键名。
(5)Reflect.ownKeys(obj)
Reflect.ownKeys返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举。
以上的 5 种方法遍历对象的键名,都遵守同样的属性遍历的次序规则。
首先遍历所有数值键,按照数值升序排列。
其次遍历所有字符串键,按照加入时间升序排列。
最后遍历所有 Symbol 键,按照加入时间升序排列。
ES6对象新增方法:
Object.is()它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。
Object.assign()方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。实行浅拷贝。这种嵌套的对象,一旦遇到同名属性,Object.assign()的处理方法是替换,而不是添加。
Object.setPrototypeOf()(写操作)、Object.getPrototypeOf()(读操作)、Object.create()(生成操作)。

15、运算符
ES2016 新增了一个指数运算符(**)。这个运算符的一个特点是右结合,而不是常见的左结合。多个指数运算符连用时,是从最右边开始计算的。
链判断运算符(?.)编程实务中,如果读取对象内部的某个属性,往往需要判断一下,属性的上层对象是否存在。链判断运算符简化了 写法。短路机制
读取对象属性的时候,如果某个属性的值是null或undefined,有时候需要为它们指定默认值。常见做法是通过||运算符指定默认值。
ES2020 引入了一个新的 Null 判断运算符??。它的行为类似||,但是只有运算符左侧的值为null或undefined时,才会返回右侧的值。
逻辑赋值运算符:这三个运算符||=、&&=、??=相当于先进行逻辑运算,然后根据运算结果,再视情况进行赋值运算。文章来源地址https://www.toymoban.com/news/detail-551711.html

到了这里,关于【ECMAScript6_3】正则、数值、函数、数组、对象、运算符的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【前端】ECMAScript6从入门到进阶

    1.ES6简介及环境搭建 1.1.ECMAScript 6简介 (1)ECMAScript 6是什么 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 (2)ECMAScript 和 JavaScript 的关系 E

    2024年02月07日
    浏览(32)
  • ECMAScript6和其常量变量的声明

    目录 1.介绍 2.babel--ES6代码转换为ES5的代码 1.安装转码工具 2.安装转换规则 3.指定转换规则 新建.babelrc 4.也可以将ES6转换为ES5之后的文件输入到另一个文件当中 5.将整个src目录下的es6文件转换成es5文件到dist目录 ​3.模块化 1-module1.js 2-module2.js ES6导出的是一个接口,接口存放的

    2024年02月15日
    浏览(29)
  • ES9学习 -- 对象的剩余参数与扩展运算符 / 正则扩展 / Promise.finally / 异步迭代

    // kerwin {age:100,location: ‘dalian’} 其中…other 可以拿到对象的剩余参数 // {name: ‘xiaoming’,location: ‘dalian’,age: 18] 在实际开发中,我们会使用ajax() 封装一些默认的属性和属性值,以备用户忘记或未传入某些参数。 // { methods: “get”, async: true, url: “/api”} 正则表达式命名捕获

    2024年04月09日
    浏览(29)
  • 【C++】STL 算法 ⑧ ( 预定义函数对象 | 预定义函数对象组成 | 预定义函数对象分类 | 预定义 算术运算符 函数对象 | 预定义 比较运算符 函数对象 | 预定义 逻辑运算符 函数对象 )

    C++ 的 标准模板库 ( STL , Standard Template Library ) 中 , 预定义了一系列的 \\\" 函数对象 “ , 又称为 ” 仿函数 Functors \\\" ; 这些 \\\" 预定义函数对象 \\\" 在 STL 算法中 , 可以 作为 算法的参数 , 定制某些参数的行为 , 如 : for_each 遍历算法中 , 传入 \\\" 一元函数对象 \\\" , 用于执行单个元素的遍历

    2024年01月16日
    浏览(55)
  • 【C++初阶】四、类和对象(构造函数、析构函数、拷贝构造函数、赋值运算符重载函数)

    ========================================================================= 相关代码gitee自取 : C语言学习日记: 加油努力 (gitee.com)  ========================================================================= 接上期 : 【C++初阶】三、类和对象 (面向过程、class类、类的访问限定符和封装、类的实例化、类对象模

    2024年02月05日
    浏览(45)
  • C++ 面向对象(3)——重载运算符和重载函数

    C++ 允许在同一作用域中的某个 函数 和 运算符 指定多个定义,分别称为 函数重载 和 运算符重载 。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 当您调用一个 重载函数 或 重载运算符 时

    2024年02月10日
    浏览(39)
  • 【C++】类和对象③(类的默认成员函数:拷贝构造函数 | 赋值运算符重载)

    🔥 个人主页: Forcible Bug Maker 🔥 专栏: C++ 目录 前言 拷贝构造函数 概念 拷贝构造函数的特性及用法 赋值运算符重载 运算符重载 赋值运算符重载 结语 本篇主要内容:类的6个默认成员函数中的 拷贝构造函数 和 赋值运算符重载 在上篇文章中我们讲到了类的默认成员函数的

    2024年04月17日
    浏览(37)
  • 【C++】类和对象(中)---拷贝构造函数、赋值运算符重载

    个人主页:平行线也会相交💪 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C++之路】💌 本专栏旨在记录C++的学习路线,望对大家有所帮助🙇‍ 希望我们一起努力、成长,共同进步。🍓 拷贝构造函数,又称复制构造函数,是一种特殊的

    2024年02月05日
    浏览(39)
  • Fortran 定义unique函数删除数组中的重复数值

    此函数和matlab中的[c,ia,ic] = unique(arr)是一致的,只能满足一维数组,二维数组其实就是加个循环即可。 参数说明: arr:要算的函数 C:unique后的数组,和arr一样长,需要count函数来获取,C(1:count)所有的不重复数值 ia:arr(ia)=C ic:C(ic) = arr count:不重复数值的个数 n:arr的大小 检验

    2024年02月16日
    浏览(37)
  • C++ -3- 类和对象 (中) | 拷贝构造函数 & 赋值运算符重载

    示例: 拷贝初始化构造函数的作用是将一个已知对象的数据成员值拷贝给正在创建的另一个同类的对象 无穷递归 ? Date(Date d){……} 首先,分析 传值传参的过程 传引用传参 : 没有拷贝 的过程,直接传 传值传参: 内置类型 编译器可以直接拷贝(浅拷贝/值拷贝——一个字节

    2023年04月19日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包