前端相关开发调试 | 青训营笔记

76 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第二天

前端debug的特点

  • 多平台:浏览器、Hybrid、桌面应用、小程序、NodeJS ......
  • 多环境:本地开发环境、线上环境
  • 多工具;Chrome DevTools Chalres spy-deBugger vConsole......
  • 多技巧:console breakpoint sourceMap 代理

Chrome DevTools

动态修改元素样式

这里可以动态地修改元素样式,如颜色,字号,宽高等,computed下点击样式箭头可跳转到对应css的styles。有两种方式激活伪类:一选中具有伪类元素,点击:hover 二DOM树右键菜单,右键点击forceState

console

常用console.log,即控制台输出。以及console.warn、console.error、console.debug、console.info等,console.table具象地展示JSON及数组数据,console.dir通过文件数的形式展示对象属性,其次还有占位符,%s代表字符串,%o代表对象,%c表示样式,%d表示数字。

Break Point

使用关键字debugger,可以设置断点,使代码执行到此处时暂停,容易通过上下差异判断bug出现在哪里,此时可配合搭配console.log且在break point列表可以查看断点列表。

Network

  • 控制面板
  • 过滤面板
  • 概览区域
  • request table面板
  • 总结面板
  • 请求详情面板

performance

image.png

运用:页面卡顿——查看FPS参数——找出性能瓶颈——优化

闭包

闭包可简单理解为定义在一个函数内部的一个函数,即连接内部函数与外部函数的桥梁。

function f1(){
 var n=999;
 function f2(){
     alert(n);
 }
 return f2;
}
var result=f1();
result();

其中f2就是一个闭包。闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

写闭包的注意:1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。