我在实验AngularJS-系统代码的配置和翻译的时候遇到了以下图所示的错误:html
在JS编程的时候会常常遇到,XXX不是一个函数,XXX未定义等等错误,只要看到和本身编写的代码语句相关的东西直接找到就能定位并将问题解决了,可是有时候前端抛出的错误和咱们本身编写的代码好像没有什么直接的关系,这时候就须要咱们好好的分析一下了,积累一些这方面的异常处理经验也是挺有用的。前端
和咱们本身编写的代码没有关系,咱们就要找找看,看看是否能找到一些联系,并从这些联系中将咱们的问题解决掉,以下是个人分析过程:编程
1:先好好的看一下报错的提示信息,看看是否是本身一眼就能看穿的,看看能不能找到本身编写的一些代码片断,若是不能的话,就尝试点击到框架的代码的里边看看可否找到一些蛛丝马迹浏览器
2:分析抛错代码段部分,看看可否大概定位到问题的所在,若是不行,就debug调试一下代码服务器
3:调试框架代码的过程当中注意观察,看看是否能找到和本身代码段相关的部分,通常就是这一块引发的问题,即便不是也离问题源不远了网络
4:根据以上分析回头查看本身的代码段,定位并将问题解决掉框架
5:小结函数
软件开发这件事情遇到各类各样的问题是再日常不过的事情了,咱们的能力也是由咱们解决问题的能力来反衬出来的,对于前端编程而言,出现的问题通常都相对好定位、好解决一些。下面是我常常遇到的一些问题:post
5-1:XXX不是一个函数?测试
此类问题产生的缘由各式各样,不过总的来说看看XXX是怎么实现就能将问题解决了。要么就不是一个函数,要么被别的代码覆盖掉了后来变成不是一个函数了。
5-2:XXX未定义?
此类问题产生的缘由也是格式各样,与5-1的解决方案相似,找XXX看看基本能将问题解决掉。要么就是没定义,要么后来变成了undefined,常见于链式调用中。
5-3:浏览器崩溃了?
代码极可能进入了死循环,执行那段代码引发的,好好查看一番,若是不知道,只能一部分一部分的执行排查出对应的代码段,而后分析为何进入了死循环,找到引发问题的代码段基本上能将问题解决掉。
5-4:浏览器不兼容?
这个问题是前端开发们比较头大的一个问题,我也比较头大,也遇到过N屡次了,谁让浏览器厂家那么多,为了竞争本身多加一些特性或者对组织指定接口经过不一样的方式实现,或者实现起来有所差别。这个要具体问题具体分析,另外就是在使用框架的时候,最好按照框架建议的方式编写代码,不要在代码中有多种的代码实现方式,好比:又有jQuery的实现方式,又有原生DOM的实现方式,又有AngularJS的实现方式。一是具体问题具体分析,另外就是积累一些浏览器对相同的功能不一样的实现方式,添加根据不一样浏览器使用不一样方式实现的功能代码。
5-5:浏览器加载速度比较慢?
这个问题也要具体问题具体分析了,网络问题、服务器问题、资源的量比较大等等都有可能引发此类问题,发布的代码要尽可能的轻量话,要通过压缩处理,多余的代码、多余的注释、多余的打印、多余的库文件等等要所有的去掉,别的很差保证至少代码自己要保证是最佳的。
5-6:一段代码今天还能实现某个功能那,隔几天就不灵了?
这个是最莫名其妙的,不过这个问题也时常的出现,多是原来就没测试到、也多是其余的代码修改后引发的,修改别的代码后没有测试到这一块没有及时发现,也有多是库文件或者框架文件的版本更改了致使的,无风不起浪事出必有因,看看是那里变化了,引发了这里的变化,要具体事件具体分析了。
5-7:一样一段代码,在这个页面能实现某个功能到,粘贴复制到另一个页面就不行了?
这里的一样必定是部分相同,必定有不一样的地方,因此才这样的。多是上下文不一样了,多是大环境不一样了,多是运行环境不一样了,总之找到他们不一样的地方就能定位到问题的所在了,若是不一样的地方还蛮多的只能采用二分法逐一的排查了,直到定位到引发此问题的代码片断为止。
5-8:代码逻辑问题,对应的功能实现不了?
按F12而后找到对应的代码打上断点,一步一步的调试看看,不规范的代码编写方式经常引发一些莫名奇妙的问题,好比:一个方法经常不是一头进一头出,中间经常调用别的方法或者别的全局变量,并且调用这个方法或者变量的地方有好多处,又或者处处使用全局变量,还有变量名和方法名重复的状况。
5-9:页面元素的样式、位置问题,很差看了、没对齐了?
这个问题经常出现,一样的页面不一样的浏览器或者一样的浏览器不一样的版本或者不一样的设置就会出现这样的问题,这也是使人头疼的浏览器兼容性问题之一,测试的时候主流的浏览器都要试一下,而后调整,平时养成良好的编程习惯,积累一些一样样式或者功能不一样浏览器不一样实现的方式,而后在代码中作出判断后再选择使用对应的方法。若是是使用框架,那就按照框架推荐的方式来使用吧!
5-10:框架的功能实现不了啦?
本身写的代码和框架起来冲突了,常见的是代码的命名重复致使的,只能一步步排查了,也有多是其余库文件代码致使的,固然这种问题出现的几率比较小,可是也是有可能的,具体事件具体分析。