1、什么是 EventLoop
EventLoop是一种事件循环机制,可以用来解决javascript单线程运行不会堵塞的一种机制,也就是我们经常使用的异步原理
在执行任务时,任务会分为宏观任务和微观任务
执行时,会先执行宏任务队列,判断是否是空,不为空,先执行宏任务,执行完成之后,进入微任务队列,判断是否为空,不为空,执行微任务,执行完成之后,重新渲染
在宏任务队列为空时,进入微任务队列,若微任务队列也为空,重新渲染
2、constructor()中 super() 的作用是什么
constructor()是构造方法,并且,该方法是类中必有的,如果没有显示定义,则默认添加空的constructor()方法
super() 作用是继承,在class方法中,继承是使用extends关键字来实现。子类必须在constructor()调用 super()方法,否则新建时会报错
报错原因是:子类没有自己的this对象,它只能继承父类的this对象
3、react 和 vue 的共同点和不同点
共同点:
1、都是单页面应用开发
2、都有状态管理
3、都使用虚拟dom
4、都遵循组件化思想
5、都是数据驱动视图
不同点:
vue:支持双向数据绑定
state对象不是必须的,数据由data属性在vue对象中管理
react:仅支持单向数据流,不支持双向数据绑定
在更新satate时,必须使用setState方法进行更新
4、箭头函数和普通函数的区别
箭头函数:
this的指向是上下文,若没有的话,指向的就是全局(windows)
箭头函数全部是匿名函数,不能用于构造函数、不具备arguments对象
普通函数:
this的指向是调用它的对象,可以使用bind、apply、call来改变this的指向
可以是匿名函数,可以是普通函数
每一个普通函数调用后都具有一个
5、描述vue生命周期,说下created和mounted两个生命周期中请求数据有什么区别
created:在模板渲染html之前调用,做一些数据初始化,完成data数据的加载,el还未加载
mounted:在模板渲染html之后调用,只要在方法中执行了页面渲染操作,都在mounted中执行,完成el和data之后的加载
6、SPA首屏加载速度慢的原因以及如何解决
原因:
1、网络延迟问题
2、资源文件体积是否过大
3、资源是否重复发送了加载请求
解决:
1、静态资源本地缓存
2、减小入口文件
3、图片资源压缩
4、组件重复打包
7、vue中组件和插件有什么区别
组件:用来构建项目的业务模块,把页面进行模块化,进行复用
插件:用来增强技术栈的功能模块,通常是全局添加的功能,如:指令、过滤器等
8、vue组件之间的通讯方式有哪些
1、父子通讯:props和$emit
父组件传递参数,子组件通过Props来接受
子组件可以通过$emit向外弹出一个自定义事件,在父组件的属性监听事件,可以获取子组件传递出来的值
2、$ref
通过引用的方式来获取子节点,常用于父组件调用子组件的方法或者获取子组件的属性
若是在for循环上调用,获取到的是一个数组值
3、vuex
4、localStorage 和 sessionStorage
9、求两个数组的交集
var a = [1,2,3,4,5]; var a2 = [2,3,1,5,5]
var a3 = a.filter((n)=> a2.indexOf(n) !== -1).filter((val,index,arr)=> arr.indexOf(val,0)=== index)
网友评论