javascript 的一些问题总结

我参与talentpool项目已经有两个月了,最近一个月参与talentpool中的resource前端对接,使用了很多javascript技术,期间遇到了各种各样的问题,因为javascript暂时还没有好的调试工具,所以探索和解决问题上很花费时间,我整理了一下项目期间所遇到的问题,现在与大家分享。

排错上浏览器的选择

javascript 出错并不明显,很多浏览器都不会提示javascript出错,IE则对javascript要求非常高,出现很小的问题,都会在IE浏览器的左下角显示出黄色三角形感叹号。双击感叹号,可以打开IE的javascript出错提示窗口,但是IE在javascript出错提示上做得并不是很好,在javascript的出错提示方面,我觉得chrome(谷歌浏览器)和Firefox(火狐浏览器)比IE好很多,他们都有自己的javascript出错控制台,可以查看出错信息,点击查看具体哪一行出错,非常的方便实用。

使用未定义变量或未定义属性

javascript作为浏览器可执行的脚本语言,非常的灵活,变量名和其下面的属性几乎都不需要预先定义,只需赋值后就可以使用了,但也因为这种灵活度,经常会造成不少困扰。未定义的变量或属性在未赋值的情况下直接使用,会出现严重错误,浏览器在遇到此错误后就会停止,不在执行剩余的代码。所以在使用javascript的时候最好不要太随心所欲,不然很容易出现未定义错误。

ajax 缓存问题

用ajax在做数据提交后立即显示更新的时候,经常会出现提交后的数据没有办法显示出来这是因为在浏览器下出现了缓存问题。导致代码只执行一次。网上提供较多的一种解决办法就是加时间戳或者随机数,使url变为唯一,这样就不会出现ie下的缓存问题了,但是这样比较繁琐,并加大代码阅读的复杂度,其实可以设置ajax中的cache属性,当cache属性设置为false时,ajax就不会读取缓存,直接访问代码。

json 格式问题

在使用ajax交互时遇到最多的问题就是json格式错误。json是一种轻量级的数据交换格式,它是一组称键 /值 对组成的字符串,键与值 都是字符串,字符串”{isUser:true}” 使用eval可以执行,但是在jQuery中,使用ajax交互时,定义type为’json’时,键与值 都不是字符串,所以json格式不对,此时会现严重错误,导致浏览器停止运行剩下代码。把字符串改为json格式时则应该为 “{‘isUser’:’true’}”。但这时,比较的时候不能简单的使用if(data.isUser == true) ,应该是 if(data.isUser == “true”)。