记录一些最近面试常见的问题,以及自己回答错误的问题,主要是VUE以及JS方面的问题 1,JS 数据遍历有哪些方法,那个方法不能break for, for in , for of ,foreach等 以上几个方法中,foreach 循环,不能break,如果要退出循环使用break会报错,使用return也不能跳出循环,代替使用方法some()和every()。 2,const 定义的值如果是数据或者对象的话,可以修改添加。因为它们两个是引用类型数据,添加修改的时候,地址不变,所以没有影响。 3,处理异步操作的一些方法 1)回调函数,回调不一定是异步 2)promise对象 3)事件监听,采用事件驱动模式,任务的执行不取决于代码的顺讯,而是取决于某个事件是否发生 4,在VUE中修改了data的值,在函数中查看修改成功了,但是在页面上没有及时刷新,这种情况下,在修改数据之后,调用this.$forceUpdata()方法,强制刷新数据 5,深拷贝,浅拷贝 浅拷贝:引用类型数据的复制一般都是浅拷贝,修改了复制结果的值,原数据的值也发生了改变 要实现深拷贝的方法:1,遍历递归 2,JSON.stringfiy()和JSON.parse(),这种方法如果对象中存在函数,日期等数据的,会报错 3,object.assign({},obj),这种obj 只能是一级对象,它对一级对象是深拷贝,对二级以及以上是浅拷贝 深拷贝:基本类型数据的复制一般都是深拷贝,修改了复制结果的值,原数据没有改变 6,computed和watch的区别 computed:计算属性,如果一个属性是由于其他属性计算得来的,支持缓存,只有当依赖的属性的值变化时,才会重新计算。例如购物结算,一般使用computed。 watch:实时监听数据的变化,不支持缓存,一般有两个参数,第一个参数是新值,第二个参数是旧值。 7,VUEX的属性 state =>相当于data,基本数据,用来存储变量 getter => 相当于计算属性,根据 state的值派生出来的值 mutation =>提交更新的方法,是同步的,commit action =>提交数据,提交的是mutation,而不是直接提交状态,是异步的,dispatch modules => 模块化VUEX,使每一个模块拥有自己的state,getter,mutation,action,使得结构清晰,便于管理 8,cookies,localStroage,sessionStroage cookies:缓存的数据小,大概4KB,安全性低,cookie是随HTTP事务一起被发送的,因此会浪费一部分发送cookie时使用的带宽。如果没有设置过期时间,在浏览器关闭的时候数据就没有了,如果设置了过期时间,在过期时间之前数据一直存在 localStroage:本地存储,大概5M数据,只是客户端使用,除非设置了删除或者清除了浏览器的缓存,否则一直存在 sessionStroage:会话存储,大概5M数据,只是客户端使用,刷新页面数据依然存在,只有关闭了浏览器,数据才会清除
目前先整理了一部分,会继续更新添加,如果有什么地方有问题或者错误的,可以指出。这些只是我自己的一些理解。