主要记录一些最近面试中常出现的问题以及自己的一些错题,答案为自己百度以及理解的,如果有不对的地方,欢迎指出。
1,数据循环遍历有哪些方法,那个方法不能break
循环遍历的方法:for,for in for of,foreach,map,filter 等
以上方法中,foreach不能break结束循环。
2,const 定义的常量如果是数组/对象这类的引用数据类型,可以进行修改添加,因为引用数据类型添加修改的时候,地址不变,所以没有影响
3,处理异步操作的一些方法
1)回调函数,回调函数不一定是异步
2)promise
3)事件监听
4,深拷贝,浅拷贝
浅拷贝:复制一个变量,复制后的结果的值改变了,原始变量的值也改变了,引用数据类型的数据的复制一般是浅拷贝。
如果要实现深拷贝:
1)遍历递归,遍历数组或者对象,判断它们的每一项的类型,如果是基本数据类型就直接拷贝,如果是队形,继续调用方法
2)JSON.sttingfiy()和JSON.parse()该方法如果对象里面存在方法,日期这类数据,会报错
3)object.assign({},obj)或者展开运算符,这种方法,需要数组或者对象是一级的,因为一级是深拷贝,二级以及以上都是浅拷贝
深拷贝:复制一个变量,修改复制后的值,原始变量的值没有变化,基本数据类型的复制一般都是深拷贝
5,使用VUE开发时,在函数中改变了页面的某个值,在函数中修改成功,但是页面中没有更新,这种情况下,一般在修改值之后,调用this.$forceUpdata()方法,强制刷新数据
6,VUEX的五个属性
state => 存储变量,相当于data,基本数据
getter => 相当于计算属性,从state中派生出来的值
mutation => 提交数据,只能同步,commit
action => 提交数据,提交的是mutation,异步操作,dispatch
modules => 模块化,使每个模块拥有自己的state,getter,mutation,action,便于管理
7,computed和watch
computed:计算属性,一个属性的值通过其他的属性计算得来,支持缓存,只用当依赖的属性的值变化的时候,才会重新计算。一般购物车计算使用computed
watch:实时监听,不支持缓存
8,cookies,localStorage,sessionStorage
cookies:存储数据小,4KB,会跟随提交到服务器,浪费宽带,如果没有设置过期时间,关闭浏览器是数据会丢失,如果设置了过期时间,在过期时间之前,数据一直存在
localStorage:本地存储,存储数据大,5M,客户端使用,除非手动删除,或者在代码中删除,否则一直存在
sessionStorage:存储数据大,5M,客户端使用,同源页面中存在,刷新页面时数据依然存在,关闭浏览器后,数据丢失
9,组件传值
父组件传值给子组件:props
子组件传值给父组件:$emit
兄弟组件之间传值:中央处理器(on),VUEX