4 ms·
Using 'debugger' to help in javascript debugging
- brettcvz 14y agoJust to preempt certain comments, I realize that many people have known this for ages, but there are many who have not, and to them this might just make their day. Also, "+new Date" is neat
- kybernetikos 14y agoSince ecmascript 5, Date.now() is the standard way of doing this. Generally speaking, I'd prefer to do that (with shims for older browsers) than do the equivalent of creating a new Date object and calling .valueOf on it (which is what +new Date does).
- nathanstitt 14y agoActually the firebug add-on for Firefox does allow you to disable the 'debugger' statement at runtime, making it safe to insert anywhere in your code. Other than that, good tip.
- artursapek 14y agoChrome Dev Tools also lets you ignore breakpoints, but I hope you're not suggesting to ship code with debugger statements?
- k3n 14y agoI don't it'll be much of a concern in a few years, though we're not there yet. Currently, Chrome will just gloss over any debugger statements unless the dev tools is open; if others happen to follow suit, then leaving a debugger statement in won't have any side-effects.
- rco8786 14y agoStill a really bad practice, IMO
- artursapek 14y agoI know, but leaving rogue debuggers after you're done using them is not good practice.
- nathanstitt 14y agoSorry if I gave that impression! What I meant to refer to was that you can insert them somewhere in a loop and then disable it once the loops ran a few times rather than having to press continue (potentially) several hundred times.
- artursapek 14y agoAh, yes. That is useful
- jonny_eh 14y agoThis sort of post should be a "pro-tip" on coderwall.com
- timothya 14y agoPro Tip: ‘debugger’ statements cannot be disabled at runtime In Chrome, you can just press the "Deactivate Breakpoints" button in the DevTools and `debugger` statements won't do anything anymore. Closing the DevTools also prevents `debugger` statements from breaking execution.
- hesselink 14y agoIn Firebug (Firefox) you can selectively disable 'debugger' statements. You can even disable them only if a condition is true.
- oomkiller 14y agoYou can also trigger the debugger only if certain conditions exist. This is helpful if you are trying to fix a bug in a code branch that is hit very often, but the bug only happens under certain conditions. if (this.foo()) debugger
- k3n 14y agoChrome also supports conditional breakpoints[1]. 1. https://developers.google.com/chrome-developer-tools/docs/scripts-breakpoints https://developers.google.com/chrome-developer-tools/docs/sc...
- likarish 14y agoIt’s better in many cases than manually setting a breakpoint in the inspector. Why does the author believe that statement is true? I'd much rather manually set breakpoints in the inspector than have to alter code. edit: formatting
- rco8786 14y agoI prefer debugger; in 2 scenarios: 1) I have the code open in my text editor but not in the inspector. Rather than open it in the inspector and search around for where I need the breakpoint I can just pop it in the code and the inspector will open up where I need it. 2) Working with single page apps where breakpoints sometimes have a hard time persisting after a file changes. Nothing more frustrating than making a change and losing your breakpoints.
- rco8786 14y agoMaybe I'm being cynical, but I find it hard to believe that any "very talented front-end engineer" wouldn't know about the debugger.