let和const声明变量,用于块级作用域和变量声明
箭头函数
模版字符串
解构赋值
扩展运算符
Promise和异步函数(async、await)
类和继承(class)
模块化(import、export关键字,提供了基于原型的继承机制)
Set和Map数据结构
Proxy和Reflect
Symbol数据类型
Iterator和for...of循环
默认参数、扩展操作符、展开操作符
模版字符串的标签功能
字符串的includes、startsWith和endsWith方法
数组的find和findIndex方法
数组的filter、map、reduce和reduceRight方法
关于this
箭头函数自身没有this的,它的this是谁调用它,this的指向谁;
这样自然就不能使用call和apply和bind来改变this的指向;
关于argument
箭头函数是没有argument的但是可以使用rest代替;
无法new
箭头函数并不是构造函数所以无法new;
特点:1、不需要function关键字来创建函数
2、省略return关键字
3、继承当前上下文this关键字
箭头函数:this永远指向其上下文的this,任何方法改变不了其指向(call、apply、bind );
普通函数:this指的是调用它的那个对象;
使用new set()、filter()、reduce函数
const array = [1, 2, 2, 3, 4, 4, 5];
const uniqueArray1 = [...new Set(array)];
const uniqueArray2 = array.filter((item, index) => array.indexOf(item) === index);
const uniqueArray3 = array.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { accumulator.push(currentValue); } return accumulator; }, []);
Promise是一个对象,可以获取异步操作的消息;
Promise.then接收两个函数作为参数(成功、失败)
Promise有等待状态pending、操作成功fulfilled、操作失败rejected、状态一旦改变就不会在变,创造promise实例后,它会立即执行;
Promise可以支持多个并发请求,获取并发请求中的数据;
链式操作减低了编码难度、代码可读性明显增强;
用法:promise构造函数接收了一个函数作为参数,该函数的两个参数分别是resolve和reject;
7、请举例说明Set和Map数据结构在实际开发中的应用场景?
Set是一种新的数据结构,类似于数组,但成员的值都是唯一的,没有重复的值;
应用场景:去重、属性检查、并集、交集和差集操作
const arr1 = [33,43,23,435,46,325]
const arr2 = [43,23,34,645,5,76,70]
const union = Array.form(new Set([...arr1,arr2])) //并集
const cross = Array,form(new Set(arr1.filter((item)=>arr2.includes(item)))); //交集
const diff = Array.form(new Set(union.filter((item)=>!cross.includes(item)))); //差集
Map是一种键值对集合,可以记住键对应的值,并支持直接通过键来访问值;
应用场景:对象属性的映射、复杂数据结构、持久化数据
链式回调
同时发起几个异步请求,谁先有结果就拿谁的
发起多个请求,等到所有请求后在做下一步处理
promise可以通过then方法实现链式回调,通过promise.all方法实现同时发起多个异步请求,通过promise.race方法实现等待多个异步请求的结果;