JavaScript脚本调试经典技巧

孟子E章 2002-05-15 11:29:53
加精
在调试Javascript脚本的时候,如果有错误,IE的状态栏里会有个问号[点击此问号],或者弹出错误框,为了尽快找到错误,下面是常用的调试方法:
1,如果出现对象为null或找不不到对象,那就是id,name或DOM写法不对,请检查错误所在的行;
2,如果错误定位到一个函数的调用上,说明函数体有问题,到函数体里找原因。
3,为了加快速度,可以先用/* */注释屏蔽掉一部分代码,逐步检查;
4,可以增加alert(xxx)来看看变量是否得到了期望的值;
5,IE的错误报告往往不准确,比如行18错的话,有时候是19行有问题;
6,为了确保代码能够正确运行,在实在不能确定能否出现错误的时候,用try{}catch{}语句在做

其他的方法,请各位继续添加。
...全文
310 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
fokker 2002-05-17
  • 打赏
  • 举报
回复
在INTERNET选项中的高级中的禁用脚本调试上的勾去掉,这样如果装了WINDOWS脚本调试工具或INTERDEV,那么在出现错误的时候旧可以用着两个东东来JS了。
chen_guo_quan 2002-05-17
  • 打赏
  • 举报
回复
大家不要离题,继续主题讨论呀!
让其他人也学习学习你们的经验!
Lostinet 2002-05-17
  • 打赏
  • 举报
回复
5555
我的是Win2kAS,什么东西都装了。
内存动不动就上300。。打打游戏就上400
我买机子的时候才配个192。。
现在硬盘响死了。
可惜现在内存又贵。。
真不知道怎么办好。
孟子E章 2002-05-17
  • 打赏
  • 举报
回复
To:runmin(悠悠 稻草人)
XP是快,单位的是w2k!!家里那个还可以
karma 2002-05-17
  • 打赏
  • 举报
回复
http://groups.google.com/groups?q=debugging+javascript&ie=UTF8&oe=UTF8&hl=en
希偌 2002-05-17
  • 打赏
  • 举报
回复
不错,无论初学还是老手都用得着!^_^
希偌 2002-05-17
  • 打赏
  • 举报
回复
不错,无论初学还是老手都用得着!^_^
Lostinet 2002-05-17
  • 打赏
  • 举报
回复
回复人: linhaibo(美洲豹) ( ) 信誉:100
哈哈。。
简单的脚本当然不会有问题。
复杂的脚本,你这次正常了,不能保证下次也正常。
把调试的代码嵌入去,很方便以后的更正的。
linhaibo 2002-05-17
  • 打赏
  • 举报
回复
好象没什么技巧,
一般IE提示缺少对象,可能就是变量写错了,或者重复了

把 alert() 放在那些可能出错的地方,并且移动它的位置,就可以知道那里出错了
weidegong 2002-05-17
  • 打赏
  • 举报
回复
好像很少看到大家用finally,贴一段出来:(用java写的例子,不过是一样的了)
当一个异常抛出时,程序的执行不再是线性的,可能跳过某些代码,甚至会由于没有匹配的catch子句而过早地返回。为了确保某一段代码无论发生什么异常都被执行到,需要使用“finally”关键字。finally程序块会在执行try程序块后的代码之前执行。每个try模块都需要至少一个catch和finally子句。一个成员函数返回调用它的函数有两种途径:一个没有被捕捉到的异常;一个return语句,finally子句总是恰好在成员函数返回前处理。
程序清单:
class FinallyDemo{
static void procA(){
try{
System.out.println("inside procA");
throw new RuntimeException("demo");
}
finally{
System.out.println("procA's finally");
}
}

static void procB(){
try{
System.out.println("inside procB");
return;
}
finally{
System.out.println("procB's finally");
}
}

public static void main(String args[]){
try{
procA();
}catch(Exception e);
procB();
}
}

运行结果:
c:\>java FinallyDemo
inside procA
procA's finally
inside procB
procB's finally
seabell 2002-05-17
  • 打赏
  • 举报
回复
孟子斑竹,非常感谢你耐心教给我们很多实在又实用的东东!!希望能向你多多学习,请多指教!!

有关try catch的一点点补充,来自部门培训例子
<script>
try{
x=y; // Cause an error.
}
catch(e){ // Create local variable e.
alert(e); // Prints "[object Error]".
alert(e.number & 0xFFFF); // Prints 5009.
alert(e.description); // Prints "'y' is undefined".
}
</script>
blues-star 2002-05-16
  • 打赏
  • 举报
回复
TO:net_lover(孟子E章)

我用vs.net的机器是两年前买的

celeron 466 128M,速度也不慢啊,而且还是装的WIN XP。
Lostinet 2002-05-16
  • 打赏
  • 举报
回复
function ASSERT(mustbetrue,msg)
{
if(mustbetrue==false)throw(new Error(-1,"ASSERT:\n"+msg));
}

VS.Net是最好的脚本调试器了。
什么都监视得了。。
--------------------
我自己还用自己做的RunScript来进行监视。
不过看不到函数里面的变量了。
51windows 2002-05-16
  • 打赏
  • 举报
回复
当我看不懂时,我常用alert(?);当发现错误时,我用2000时面的记事本CTRL+G来定位,找一下错误!
qiushuiwuhen 2002-05-16
  • 打赏
  • 举报
回复
自己写的,很少出错,所以很少调试经验

而帮别人调试的经验中,经常是少了匹配和大小写错误。

所以我还是觉得不需要太多调试经验,写多了自然就会了。

否则写出来就会变得有点教条主义,郑人买履了
Andrawu 2002-05-16
  • 打赏
  • 举报
回复
就是,就是,不过还蛮多人和我的方法一样的。
Visual Interdev 的确是一个好东西。
孟子E章 2002-05-16
  • 打赏
  • 举报
回复
To:karma(无为)
我安装了VS.NET,如果机器配置不高的话,那太慢了。你有好的经验吗,可以发表,让大家都学习一下。
apple749769 2002-05-16
  • 打赏
  • 举报
回复
我经常用alert来测试。
karma 2002-05-16
  • 打赏
  • 举报
回复
use Visual Interdev to debug
qiushuiwuhen 2002-05-15
  • 打赏
  • 举报
回复
1.问号[点击此问号],或者弹出错误框,为了尽快找到错误

点问号,看第n+1行是否有错误。没有就往前

重要的是经验,而且是自己写的代码,才能对症下药


2.程序代码要规范,括号要对应,尽量使用tab键
加载更多回复(17)

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧