前端面试题总结2020-1

98 阅读2分钟

主要记录一些最近面试中常出现的问题以及自己的一些错题,答案为自己百度以及理解的,如果有不对的地方,欢迎指出。

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

      兄弟组件之间传值:中央处理器(emit,emit,on),VUEX