V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
binarymann
V2EX  ›  JavaScript

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

  •  
  •   binarymann · 2015-03-07 10:10:07 +08:00 · 2500 次点击
    这是一个创建于 3542 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我有一段简单的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/

    
    
    10 条回复    2015-03-08 11:00:51 +08:00
    mcfog
        1
    mcfog  
       2015-03-07 10:14:30 +08:00 via Android
    对,这里应该钻入(f11),也就是进入resolve的实现内部

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

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

    angular那些框架其实多是废物
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2405 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:57 · PVG 09:57 · LAX 17:57 · JFK 20:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.