ECMA 语法知识点

ECMA 语法知识点
1、什么是 ECMA
ECMA(European Computer Manufacturers Association)中文名称为欧洲计算机制造商协会,这个组织的目标是评估、开发和认可电信和计算机标准。1994 年后该组织改名为 Ecma 国际。什么是 ECMAScript :ECMAScript 是由 Ecma 国际通过 ECMA-262 标准化的脚本程序设计语言。为什么要学习 ES6 ,ES6 的版本变动内容最多,具有里程碑意义,ES6 加入许多新的语法特性,编程实现更简单、高效 ,ES6 是前端发展趋势,就业必备技能。
2、ECMASript 6 新特性
let 关键字:let 关键字用来声明变量,使用 let 声明的变量有几个特点:不允许重复声明,块儿级作用域,不存在变量提升,不影响作用域链。const 关键字:const关键字用来声明常量,const 声明有以下特点:声明必须赋初始值,标识符一般为大写,不允许重复声明,值不允许修改,块儿级作用域,变量的解构赋值 。
3、ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值。4、模板字符串:模板字符串(template string)是增强版的字符串,用反引号(`)标识,特点: 字符串中可以出现换行符,可以使用 ${xxx} 形式输出变量
5、简化对象写法
ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。
6、箭头函数
ES6 允许使用「箭头」(=>)定义函数。
/**

    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』改变这种行为,允许运行终止符出现。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值