前端四个高频面试题

80 阅读2分钟

1.闭包是什么?缺点是什么? 函数内部使用外部变量,只要函数不被销毁,变量就一直占据内存 缺点:过多的闭包会占用过多内存,导致内存泄漏,IE最明显 2.前端性能优化 (1)统一使用封装的组件保证样式统一 (2)减少dom操作,能用dom片段的操作dom片段,减少重绘和回流,操作dom使用vue提供的ref 指令等,避免使用原生js 当页面中元素样式的改变并不影响它在文档流中的位置时(例如:colorbackground-colorvisibility等),浏览器会将新样式赋予给元素并重新绘制它,这个过程称为重绘。 当Render Tree中部分或全部元素的尺寸、结构、或某些属性发生改变时,浏览器重新渲染部分或全部文档的过程称为回流。 (3)路由图片等使用懒加载,按需加载组件和路由 (4)反复使用的计算属性,定义成一个变量 (5)频繁切换使用v-show,不频繁使用v-if (6)合理使用vue提供的缓存功能,比如keep-alive computed等 watch为监听元素变化, computed 会从缓存中获取,有缓存 watch没有缓存, 能用computed不用methods和watch (7)图标使用优先级iconfont>webp>jpg>png 3.从输入url到展示页面经历哪些过程 (1)输入url按下回车 (2)浏览器查找域名的ip地址 (3)建立TCP链接(三次握手) (4)浏览器向服务器发起http请求 (5)服务器处理请求 (6)关闭TCP链接 (7)浏览器解析资源 4.深拷贝 方法一 var obj =JSON.parse(JSON.stringify(object)) 方法二 function deepCopy(obj){ if(obj typeof !=='object'){ return obj }else{ let res = Array.isArray(obj)?[]:{} for(var k in obj){ if(obj.hasOwnProperty[key]){ if(typeof obj[k] === 'object'){ res[key] = deepCopy(obj[key]) }else{ res[key] = obj[k]} } } return res }