
上QQ阅读APP看书,第一时间看更新
1.3.3 调试JavaScript程序
程序出错类型分为语法错误和逻辑错误两种。
1. 语法错误
语法错误是在程序开发中使用不符合某种语言规则的语句,从而产生的错误称为语法错误。例如,错误地使用了JavaScript的关键字,错误地定义了变量名称等,这时,当浏览器运行JavaScript程序时就会报错。
例如,将上面程序中的第11行中的语句改写成下述语句,即将第一个字符由小写字母改成大写字母。
Alert("我要学JavaScript!");
保存该文件后再次在浏览器中运行,程序就会出错。
运行本程序,将会弹出图1-21所示的错误信息。
2. 逻辑错误
有些时候,程序中不存在语法错误,也没有执行非法操作的语句,可是程序运行的结果却是不正确的,这种错误叫作逻辑错误。逻辑错误对于编译器来说并不算错误,但是由于代码中存在的逻辑问题,导致运行结果没有得到期望的结果。逻辑错误在语法上是不存在错误的,但是从程序的功能上看是bug。它是最难调试和发现的bug。因为它们不会抛出任何错误信息。唯一能看到的就是程序的功能(或部分功能)没有实现。

图1-21 在IE浏览器中调试JavaScript
例如,某商城实现商品优惠活动,如果用户是商城的会员,那么商品打八五折,代码如下。
<script language="javascript"> user="会员"; if(user=="会员"){ price=485*8.5; //485是商品价格,8.5是打的八五折 alert("商品的会员价格是:"+price); //输出商品的会员价 } </script>
运行程序时,程序没有弹出错误信息。但是当用户为商城的会员时,商品价格乘以一个8.5,相当于,商品不但没有打折扣,反而比原价贵了8.5倍,这一点就没有符合要求,属于逻辑错误,应该乘以0.85才正确。
在实现动态的Web编程时,通常情况下,数据表中均是以8.5进行存储,这时在程序中就应该再除以一个10,这样,就相当于原来的商品价格乘以一个0.85。正确的代码为:
price=485*8.5/10; //485是商品价格,"8.5/10"是打的八五折
对于逻辑错误而言,发现错误是容易的,但要查找出逻辑错误的原因却是很困难。因此,在编写程序的过程中,一定要注意使用语句或者函数的书写完整性,否则将导致程序出错。