定位JS死循环位置

上周写代码写了个死循环,当时不知道是死循环,整个代码重构了一遍,还是跑不起来,Chrome一直在加载,控制台JS代码都显示不出来,当时怀疑是死循环,但是代码量那么多,无从查起,而且没有做版本管理,只能重写代码,难受

尝试过重装Chrome还是没用,于是换了Microsoft EDGE,结果是代码能加载出来,但是页面表现不符合预期,整个页面什么都没显示出来。最后尝试用Firefox,结果如下,出现了提示某个网页让您的浏览器变慢了。您想如何处理?

当然是选择右边的停止了,这时候JS代码就加载出来了,发现控制台有个打印timeout,死循环实锤了,并且给出了死循环的代码行数,点进去,打断点,刷新页面

发现有个方法在执行死循环,上图控制台的打印也显示出来了死循环的方法名setScreenSize,_changeCanvasSize,检查代码,查_changeCanvasSize的调用逻辑,发现只要设置了宽高,_changeCanvasSize就会被调用,而size方法会重设宽高,所以就形成了"_changeCanvasSize-size重设宽高-调用_changeCanvasSize"的死循环,注释掉_changeCanvasSize里的size,完美解决死循环问题。

以上是发现死循环到解决死循环的全过程,实际要查JS死循环,用Firefox执行JS代码就能定位问题了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章