一.var,let,const区别
1.变量提升:var存在变量提升,即变量可在声明前调用,值为undefined,let,const不存在变量提升
2.暂时性死区:var不存在,let,const存在,只有等到声明变量那一刻才能使用
3.块级作用域:var不存在作用域,let和const存在块级作用域
4.重复声明:var允许,let和const在同一作用域不允许重复声明变量
5.修改声明变量:var和let可以,const声明一个常量,声明完,不能改变
能用const就用 ,多数用let,避免使用var
二:es6新增的数组方法
1.扩展运算符...的应用
2.Array.from:将类似数组的对象转为数组,Array.from(arr,(x)=>x*x)第一个参数是原数组,第二个参数可对数组进行平方处理
3.Arroy.of:将一组值转为数组,没有参数,返回空数组,只有一个参数,返回数组的长度,有两个以上参数array()才会返回有参数
组成的新数组;
4.find()用于找出第一个符合条件的数组成员,参数是一个回调函数find(value,index,arr),分别为值,索引,原数组
5.findIndex():返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1
6.fill()使用给定值,填充一个数组,【'a','b','c'】.fill(72) //[7,7,7]
7.entries(),key(),values()keys()是对键名的遍历,values()是对键值的遍历,entries()是对键值对的遍历8.includes()判断数组是否包含给定的值
[1,2,3].includes(2) //true
9.flat(),flatMap()
将数组扁平化处理,返回一个新数组,对原数据没有影响
flat()只会拉平一层,想拉平两层flat(2)
flatMap()方法对原数组的每个成员执行一个函数相当于执行Array.prototype.map(),然后对返回值组成的数组执行flat()方法。
该方法返回一个新数组,不改变原数组
10.sort排序()默认设置为稳定的排序算法
三.es6中对象新增哪些扩展
1.属性简写
2.属性表达式
3.super关键字:this指向函数所在的对象,super指向当前对象的原型对象
4.扩展运算符 ...
5.属性的遍历
6.object.setprototypeof()设置对象的原型对象,get是获取
7.object.key()返回可比遍历的键名的数组
8.object.values()返回键对应值的数组
9.object.entries返回键值对
四.es6函数新增哪些扩展
1.length返回没有默认值的参数个数
2.允许函数的参数设置默认值
3.箭头函数
五.es6的promise
翻译为承诺,是异步编程的解决方案,代码可读性明显增强,用来解决回调地狱,一旦状态改变,就不会在变,信任度很好;有三个状态:pending进行中,fulfilled
已成功,rejected已失败。reselove成功,reject失败
六.es6的Generator
也是异步解决方案,但并不是为异步而设计出来的,它还有其他功能(对象迭代,控制输出,部署interator接口..)
七.什么是async和await
它其实是Generator的语法糖,是一种建立在promise之上的编写异步或非阻断代码的新方法,被普遍认为是js异步操作最终解决方案,
async是异步的简写,await则译为等待,async用于申明一个function函数是异步的,而await用于等待一个异步方法执行完成,await必须出现在async函数中
八.es6的proxy
为构造函数,一般作为前端跨域,有两个参数值,第一个target,表示要拦截的对象,handler通常以函数作为属性的对象
九.怎么理解module
模块化,export导出,import导入
使用场景:vue组件和react项目搭建的项目,经常会用到
十.Decorator
类和类属性的装饰,不改变原有的代码,对原来功能进行扩展
使用场景:使用react-redux时,通过装饰器,让代码变得更简洁,