Jade Dungeon

Javascript调试技巧

Javascript调试技巧

debugger

正如我之前提到的,你可以使用「debugger;」语句在代码中加入强制断点。

需要断点条件吗?只需将它包装它在IF子句中:

if (somethingHappens) {
    debugger;
}

只需记住在上线前移除。

还有为了给F12偷看你源代码的人添乱,可以用setInterval定时器每一秒钟调用一次 debugger进入断点。这样普通用户不会受到影响,但是想打开浏览器控制台的人 会不断地进入调用debugger的函数。

Chrome浏览器的「禁用所有断点」功能可以禁用debugger调用,但是Firefox不行。

F12偷看你源代码的人添乱的另一个方法就是利用递归次数过多调试工具会抛出异常, 旁门左道,前端再怎么设防依旧是运行在客户端的https://jsfiddle.net/ftpgxm/t4ux8xp4/2/

!function test() {
	// 捕获异常,递归次数过多调试工具会抛出异常。
	try{
		!function cir(i)
		{
			// 当打开调试工具后,抛出异常,setTimeout执行test无参数,
			// 此时`i == NaN,("" + i / i).length == 3`
			// debugger设置断点
			( 1 !== ( "" + i / i).length || 0===i ) && function(){}.constructor("debugger")(),cir(++i);
		} (0)
	} catch(e) {
		setTimeout(test,500)
	}
}()

注意这里的:

!function test() { /* ... */ }()
// 相当于
(function test() { /* ... */ })()

当节点变化时断开

有时DOM像有了自己的想法。当不可思议的变化发生时很难找到问题的根源。

Chrome开发人员工有调试这个问题的超级有用技能。这就是所谓的「Break on…」, 你可以通过在元素选项卡上右键DOM节点找到它。

断点可以在节点被删除后设置,当节点的属性更改或者其子树中的节点变化时。

Ajax断点

Chrome的XHR断点或我称作的Ajax断点,也允许当一个预期Ajax请求创建时断开。

当调试你的web应用的网络时这是个让人吃惊的工具。

模拟不同的移动设备

Chrome增加了内置的移动设备模拟工具,这将简化你的日常工作。

选择任何非Console的选项卡找到它们,按键盘上的esc键并选择你想摸你的移动设备。

你当然不会得到一个真正的iPhone,但尺寸、触摸事件和agemt都会为你效仿。

通过审核提升你的站点

YSlow是个伟大的工具。Chrome也在开发人员工具下包含一个称作Audits的类似工具。

使用快速审核一下你的网站,来获得有用实际的优化技巧。

image

还有什么呢?

没有这些工具我不能想象如何开发。当我发现新的后我会发布更多,敬请期待。