The following code has a new callstack when the debugger fires in d (jsfiddle here)
function c() {
    setTimeout( d, 1000 );
}
function d() {
    debugger;   
}
c();
If we modify the code to use setTimeout( d(), 1000 ); which has brackets (parenthesis:) 
function c() {
    setTimeout( d(), 1000 );
}
function d() {
    debugger;   
}
c();
then the callstack has both c() and d() (jsfiddle here). Why?
 
     
     
    