ECMA 语法知识点

ECMA 语法知识点ECMA 语法知识点 ecma

大家好,欢迎来到IT知识分享网。

    1. 通用写法
      */
      let fn = (arg1, arg2, arg3) => {

      return arg1 + arg2 + arg3;
      }
      箭头函数的注意点: 如果形参只有一个,则小括号可以省略,函数体如果只有一条语句,则花括号可以省略,函数的返回值为该条语句的,执行结果:箭头函数 this 指向声明时所在作用域下 this 的值,箭头函数不能作为构造函数实例化,不能使用 arguments,rest 参数
      ES6 引入 rest 参数,用于获取函数的实参,用来代替 arguments
      7、spread 扩展运算符
      扩展运算符(spread)也是三个点(…)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列,对数组进行解包。
      8、Symbol
      Symbol 基本使用:ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,是一种类似于字符串的数据类型。Symbol 特点:Symbol 的值是唯一的,用来解决命名冲突的问题,Symbol 值不能与其他数据进行运算,Symbol 定义 的 对象属 性 不能 使 用 for…in 循 环遍 历 ,但 是可 以 使 用Reflect.ownKeys 来获取对象的所有键名。Symbol 内置值除了定义自己使用的 Symbol 值以外,ES6 还提供了 11 个内置的 Symbol 值,指向语言内部使用的方法。可以称这些方法为魔术方法,因为它们会在特定的场景下自动执行。
      9、迭代器
      遍历器(Iterator)就是一种机制。它是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作。ES6 创造了一种新的遍历命令 for…of 循环,Iterator 接口主要供 for…of 消费,原生具备 iterator 接口的数据(可用 for of 遍历) ,Array:Arguments ,Set, Map ,String,TypedArray ,NodeList 。工作原理:创建一个指针对象,指向当前数据结构的起始位置,第一次调用对象的 next 方法,指针自动指向数据结构的第一个成员,接下来不断调用 next 方法,指针一直往后移动,直到指向最后一个成员每调用 next 方法返回一个包含 value 和 done 属性的对象。注: 需要自定义遍历数据的时候,要想到迭代器。
      10、生成器
      生成器函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同
      11、Promise
      Promise 是 ES6 引入的异步编程的新解决方案。语法上 Promise 是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果。Promise 构造函数: Promise (excutor) {} , Promise.prototype.then 方法,Promise.prototype.catch 方法
      12、Set
      ES6 提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的,集合实现了 iterator 接口,所以可以使用『扩展运算符』和『for…of…』进行遍历,集合的属性和方法:size:返回集合的元素个数, add:增加一个新元素,返回当前集合,delete 删除元素,返回 boolean 值,has:检测集合中是否包含某个元素,返回 boolean 值。clear清空集合,返回 undefined。
      13、Map
      ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合。但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map 也实现了iterator 接口,所以可以使用『扩展运算符』和『for…of…』进行遍历。Map 的属性和方法:size:返回 Map 的元素个数。 set增加一个新元素,返回当前 Map, get返回键名对象的键值,has检测 Map 中是否包含某个元素,返回 boolean 值,clear清空集合,返回 undefined。
      14、class 类
      ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过 class 关键字,可以定义类。基本上,ES6 的 class 可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的 class 写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。知识点: class 声明类,constructor 定义构造函数初始化,extends 继承父类,super 调用父级构造方法,static 定义静态方法和属性,父类方法可以重写。
      15、数值扩展
      二进制和八进制:ES6 提供了二进制和八进制数值的新的写法,分别用前缀 0b 和 0o 表示。 Number.isFinite() 与 Number.isNaN() ,Number.isFinite() 用来检查一个数值是否为有限的 Number.isNaN() 用来检查一个值是否为 NaN 。Number.parseInt() 与 Number.parseFloat() ES6 将全局方法 parseInt 和 parseFloat,移植到 Number 对象上面,使用不变。Math.trunc用于去除一个数的小数部分,返回整数部分。Number.isIntegerNumber.isInteger() 用来判断一个数值是否为整数
      16、对象扩展
      ES6 新增了一些 Object 对象的方法:Object.is 比较两个值是否严格相等,与『===』行为基本一致(+0 与 NaN),Object.assign 对象的合并,将源对象的所有可枚举属性,复制到目标对象, proto、setPrototypeOf、 setPrototypeOf 可以直接设置对象的原型
      17、 模块化
      模块化是指将一个大的程序文件,拆分成许多小的文件,然后将小文件组合起来。模块化的好处:防止命名冲突,代码复用,高维护性。模块化规范产品
      ES6 之前的模块化规范有:CommonJS => NodeJS、Browserify, AMD => requireJS ,CMD => seaJS。ES6 模块化语法:块功能主要由两个命令构成:export 和 import。export 命令用于规定模块的对外接口,import 命令用于输入其他模块提供的功能
      18、ECMASript 7 新特性
      Array.prototype.includes:Includes 方法用来检测数组中是否包含某个元素,返回布尔类型值指数操作符:在 ES7 中引入指数运算符「」,用来实现幂运算,功能与 Math.pow 结果相同
      19、ECMASript 8 新特性
      async 和 await :async 和 await 两种语法结合可以让异步代码像同步代码一样,async 函数:async 函数的返回值为 promise 对象,promise 对象的结果由 async 函数执行的返回值决定。await 表达式:await 右侧的表达式一般为 promise 对象,await 返回的是 promise 成功的值,await 的 promise 失败了, 就会抛出异常, 需要通过 try…catch 捕获处理 。Object.values 和 Object.entries ,Object.values()方法返回一个给定对象的所有可枚举属性值的数组,Object.entries()方法返回一个给定对象自身可遍历属性 [key,value] 的数组
      Object.getOwnPropertyDescriptors该方法返回指定对象所有自身属性的描述对象。
      20、ECMASript 9 新特性
      Rest/Spread 属性:Rest 参数与 spread 扩展运算符在 ES6 中已经引入,不过 ES6 中只针对于数组,在 ES9 中为对象提供了像数组一样的 rest 参数和扩展运算符,正则表达式命名捕获组 ,ES9 允许命名捕获组使用符号『?』,这样获取捕获结果可读性更强。正则表达式反向断言:ES9 支持反向断言,通过对匹配结果前面的内容进行判断,对匹配进行筛选。正则表达式 dotAll 模式:正则表达式中点.匹配除回车外的任何单字符,标记『s』改变这种行为,允许运行终止符出现。



































免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137072.html

(0)
上一篇 2025-06-23 13:26
下一篇 2025-06-23 13:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信