es6-11新特性

61 阅读5分钟

let

  1. let变量不能重复声明
  2. 块级作用域(代码块生效  if  else  while for)
  3. 不存在变量提升
  4. 不影响作用域链 *const
  5. 一定要赋初始值
  6. 一般常量使用大写(潜规则)
  7. 常量的值不能修改
  8. 块级作用域
  9. 对于数组和对象的元素修改,不算做对常量的修改,不会报错 变量的解构赋值 1.数组的解构 2.对象的解构 箭头函数

     es6允许使用【箭头】定义函数

         let fn=function(){

         }

         let fn=(a,b)=>{

          return a+b

         }

  1. this是静态的,this始终指向函数声明时所在作用域下的this的值 2.不能作为构造函数实例化对象 3.不能使用arguments变量 4.箭头函数的简写
    1. 省略小括号,当形参有且只有一个的时候 2)省略花括号括号,当代码体还有一条语句的时候,此时return必须省略,而且语句 执行的结果就是函数的返回值
  •      箭头函数适合与this无关的回调,定时器,数组的方法回调
  •      箭头函数不适合与this有关的回调,事件回调,对象的方法

111.png

rest参数 Rest 参数接受函数的多余参数,组成一个数组,放在形参的最后

扩展运算符

symbol

symbol特点 symbol

symbol内置属性

\


迭代器

迭代器(iterator)是一种接口,为各种不同的数据结构提供统一的访问机制,任何数据只要部署iterator接口(对象里面的属性),就可以完成遍历

  1. es6创造了一种新的遍历命令for...of循环,iterator接口主要提供or...of消费
  2. 原生具备iterator接口的数据(可用for of遍历)
  • Array
  • Arguments
  • Set
  • Map
  • String
  • TypedArray
  • NodeList

     3.工作原理

  • 创建一个指针对象,指向当前数据结构的起始位置
  • 第一次调用对象的next方法,指针自动指向数据结构的第一个成员
  • 接下来不断调用next方法,指针一直往后移动,直到指向是最后一个成员为止
  • 每次调用next方法返回一个包含value和done属性的对象

Promise

语法上说promise是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果。有三个状态 初始化、成功、失败

  1. Promise构造函数:Promise (excutor) {}
  2. Promise.prototype.then方法   then方法的返回结果是promise对象,对象状态有回调函数饿执行结果决定
  •  如果回调函数中返回的结果是非promise属性,状态为成功,返回值为对象的成功值
  • 如果回调函数中返回的是promise属性,状态为promise的状态 

     3.Promise.prototype.catch方法

Set set介绍

并集

let union=[...new Set([...arr,...arr2])]

es6数值扩展

  1. Number.EPSILION 2.二进制和八进制 3.Number.isFinite  检测一个数值是否为有限数
  2. Number.isNaN  检测一个数值是否为NaN 5.Number.ParseInt  parseFlost 字符串转整数
  3. Number.isInteger 判断一个数是否为整数\
  4. Math.trunc 将数字的小数部分抹掉 
  5. Math.sign 判断一个数是正数 (1)负数(-1) 还是零(0)

**es6对象方法扩展

  1. Object.is  判断两个值是否完全相等
  2. Object.assign  对象的合并 第一个参数是模板 ,第二个是要覆盖的内容
  3. Object.setPrototypeOf 设置原型对象  Object.getPrototypeof\

*模块化 模块化的好处

         防止命名冲突

         代码复用

         高维护性

模块化规范产品

         es6之前的模块化规范有:

         CommonJS=>nodejs、browserify

         AMD=>requireJS

         CMD=>seajs

es6模块化语法

export 命令用于规定模块的对外接口   分别暴露、统一暴露、  expprt default  默认暴露

import  输入其他模块提供的功能 通用的导入方式、解构赋值形式、简便形式            

\

es7新特性

  1. Array.prototype.includes      includes检测数组中是否还有某个值
  2. **     2**10   2的十次方\

es8新特性\

****async和await 两种语法结合可以让异步代码像同步代码一样

    async函数

     1.async函数的返回值为promise对象     

返回的结果不是一个promise类型的对象,返回的是成功的promise

抛出错误,返回的结果是一个失败的Promise

返回的如果是一个promise对象,

     2.promise对象的结果有async函数执行的返回值决定

await

  1. await必须写在async函数中
  2. await右侧的表达式一般为promise对象
  3. await返回的是promise成功的值
  4. await的promise如果失败了,就会抛出异常,需要通过try...catch来捕获处理

es8中对象方法扩展

  1. Object.keys(obj) 获取对象所有的键
  2. Object.values (obj) 获取对象所有的值
  3. Object.entries(对象)  返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对数组
  4. Object.getOwnpropertyDescriptors(obj)   对象属性的描述对象

es10

object.fromEntries 二维数组转化为对象

trimStart清除字符串左侧空白字符

trimEnd清除字符串右侧空白字符\

flat 将多维数组转化为低纬数组 参数为深度 是一数字

flatMap 此方法和flat一样会降维数组 不过此方法只会降维一次 并可以对数组中的元素进行迭代通过return返回 (不会                 改变原数组 需要使用一个变量容器承接)

Symbol.prototype.description 用于返回指定符号对象的可选描述

es11\

import动态引入

globalThis 始终指向全局对象