请问应该如何有效的 debug javascript 代码呢,我设的断点下一步直接调到框架代码中去了

2015-03-07 10:10:07 +08:00
 binarymann
我有一段简单的jQuery deferred object的代码(如下),我在resolve() 被调用时设置了个断点,本想看看resolve()后会执行什么(期望是执行done() 方法(可能我对deferred的理解也不准确)),但关键我step over (F10) 后就直接被跳到jquery框架代码了,直到call stack所有的call都pop完了都没有来到done() 那里...js新手完全不知道怎么debug js代码啊,面对框架代码就瞎了(对debug也是正在学习中,可能这里不应该step over?),还请大人指点一二

http://jsfiddle.net/turtlemonvh/sszEd/



2500 次点击
所在节点    JavaScript
10 条回复
mcfog
2015-03-07 10:14:30 +08:00
对,这里应该钻入(f11),也就是进入resolve的实现内部

然后你会看到defer实现的若干调用,一直钻下去到$.Callbacks的部分应该就能断到业务的回调了
binarymann
2015-03-07 10:36:53 +08:00
@mcfog 果然是!感谢mcfog,钻入是钻到当前调用方法的具体实现,而step over是跳到callstack的下一个方法,我的理解没有错吧?钻进去看到的代码头都大了,最主要是里面方法的参数全是字母...不是说方法名应该descriptive吗...
oott123
2015-03-07 10:40:49 +08:00
把 jQuery.min.js 换成 jQuery.js 看着会舒服些。
arachide
2015-03-07 10:42:11 +08:00
最好别用框架
那些都是吧简单的事情搞复杂的人混饭吃的

html+ccc+javascript就是前端终极框架
arachide
2015-03-07 10:42:37 +08:00
html+css+javascript就是前端终极框架
binarymann
2015-03-07 15:17:22 +08:00
@arachide 原本也想过但有太多轮子要造了,再不用别的,也用用jQuery吧 :)
binarymann
2015-03-07 15:18:21 +08:00
@oott123 会吗?我看到在调试窗口里面点 { } 按钮能把压缩了空格换行的代码重排复原的
oott123
2015-03-07 16:25:06 +08:00
@binarymann 会,那样你看到的代码变量名不会是 a,b,c,d,e
binarymann
2015-03-07 17:20:26 +08:00
@oott123 这还真不知道,感谢告知!我马上跑去看看!
arachide
2015-03-08 11:00:51 +08:00
@binarymann jquery是库不是框架 可用

angular那些框架其实多是废物

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/175089

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX