最近在写一段js的代码中遇到了这样一个奇怪的问题。
那天下午,我将模块中所有的功能代码调试完毕后,接着就删除了一些调试代码,最后svn提交。长长的伸了个懒腰后下班了。
第二天,测试人员跑过来说功能上有欠缺。我一看,他所说欠缺的功能我昨天都已经实现了,怎么今天突然都不能用了呢?还以为我在提交的时候出了什么差错,可是在自己的电脑上一看,所有昨天实现了的功能真的一个个都没起作用。真是有苦说不清,昨天明明都调试成功再提交的。。。
没办法只得看看代码哪里出了问题,几经周折,最后发现错误在一段js代码中,调试的时候加了alert()方法,提交前这个方法被我删掉了,然后在这个alert()方法之后的js代码就不执行,所以相应的功能也都没了。
这个问题很奇怪,因为我不是异步执行的,所有的代码都是同步的,应该是逐个往下执行,按理说,一个alert不会影响到同步执行的代码,但在删掉它之后真的就出了上面所述的问题。后来发现,如果在alert的位置加一行延时1秒的代码,程序又会正常的执行了!回想,在调试的时候加上alert也就相当于起到延时的作用。真的很神奇,到现在我还没有找到明确的答案。
这段代码唯一有点特殊的地方可能就是稍微长了点,大概有五六十行的样子,而那个alert的位置比较靠尾。
后来为了代码的稳定,没有采用延时的方法,换了种算法将功能实现了,但是上面说到的那个问题还是没有找到答案,不知道前辈没有有没有遇到过这样的问题,还望不吝赐教。