1 常用es6
class类继承;箭头函数;let const;新增的数据类型Symbl;set和map;解构赋值;拓展运算符;primise;module中的export和import;对象新增的方法assign,keys,values,entries。
2 闭包
闭包是一个有访问其他函数作用域局部变量的一个函数。
是因为js中,变量的作用域属于函数的作用域,函数执行完后,作用域被销毁,变量内存也就被收回。但闭包是函数中的子函数,有权访问上级作用域,即使函数执行完,作用域也不会销毁,变量就被保存下来,此时的子函数就是闭包,就有了访问上级作用域变量的权限。
作用:闭包可以称作链接函数内部和外部的一座桥梁,主要是2个作用,可以读取函数内部的变量;
可以将变量始终保存在内存中
弊端:由于闭包的变量都保存在内存中,所以内存消耗很大,不能滥用闭包,否则会造成网页性能问题,在IE中可能会造成内存泄漏。
解决方法:退出函数之前,将不使用的局部变量全部删除。
3 primise
primise主要是解决ajax回调地狱的问题。简单来说primise是一个容器,里面保存未来才会结束的事件结果。primise是个对象,可以获取异步操作的结果。primise的状态不受外界影响并且不可逆。
primise有2种模式,primise。all将传入数组中primise全部决议之后,将决议值以数组的形式传入观察回调中,任何一个primise为拒绝,那么就会调用拒绝回调。race是将传入数组中所有primise中第一个决议值传给观察回调。
4 性能优化
使用雪碧图合成一张图片,减少http请求;
用webpack合并css和js;
减少dom操作;
5 ajax
是一种异步请求数据的,改善用户体验。简单来说,在不需要重新刷新,ajax通过浏览器的XMLHTTPrequest异步请求和接收数据,并在网页上呈现出来。
6 ajax和fetch和axios的区别
ajax就是异步刷新页面,提高用户体验的技术。主要用到浏览器的xmlhttprequest对象,进行服务器的请求和接收参数,不刷新页面进行异步更新。但是有回调地狱问题。
fetch是基于primise对象封装的,可以解决回调地狱问题,写法相对ajax 比较简单,但默认不带cookie,需要手动添加,而且比较axios写法要麻烦一些,因为要多解一层流。
axios也是对xmlhttprequest的封装,是对primise的实现版本。基本没什么缺点。可以解决ajax回调地狱问题,写法也比较简单,也比较小