0
0
Javascriptprogramming~20 mins

Call stack behavior in Javascript - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Call Stack Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of nested function calls?
Consider the following JavaScript code. What will be printed to the console when start() is called?
Javascript
function first() {
  console.log('first');
}

function second() {
  first();
  console.log('second');
}

function start() {
  second();
  console.log('start');
}

start();
A"first" "second" "start"
B"start" "second" "first"
C"second" "first" "start"
D"first" "start" "second"
Attempts:
2 left
💡 Hint
Think about the order functions are called and when console.log runs inside each.
Predict Output
intermediate
2:00remaining
What happens with recursive calls?
Look at this recursive function. What will be the last number printed before the function stops?
Javascript
function countdown(n) {
  if (n <= 0) {
    console.log('Done');
    return;
  }
  console.log(n);
  countdown(n - 1);
}

countdown(3);
A"3"
B"1"
C"Done"
D"0"
Attempts:
2 left
💡 Hint
Think about when the base case is reached and what it prints.
Predict Output
advanced
2:00remaining
What is the output with asynchronous calls and call stack?
What will be the order of console logs when this code runs?
Javascript
console.log('Start');
setTimeout(() => console.log('Timeout'), 0);
console.log('End');
A"Start" "Timeout" "End"
B"Timeout" "Start" "End"
C"End" "Start" "Timeout"
D"Start" "End" "Timeout"
Attempts:
2 left
💡 Hint
Remember that setTimeout callback runs after the current call stack is empty.
Predict Output
advanced
2:00remaining
What error occurs with infinite recursion?
What error will this code produce when run?
Javascript
function recurse() {
  recurse();
}

recurse();
AReferenceError: recurse is not defined
BRangeError: Maximum call stack size exceeded
CSyntaxError: Unexpected token
DTypeError: recurse is not a function
Attempts:
2 left
💡 Hint
Think about what happens when a function calls itself endlessly without stopping.
🧠 Conceptual
expert
3:00remaining
How does the call stack handle nested asynchronous functions?
Given the code below, what is the order of console logs printed?
Javascript
async function first() {
  console.log('first start');
  await second();
  console.log('first end');
}

async function second() {
  console.log('second start');
  await Promise.resolve();
  console.log('second end');
}

first();
console.log('script end');
A"first start" "second start" "script end" "second end" "first end"
B"script end" "first start" "second start" "second end" "first end"
C"first start" "second start" "second end" "first end" "script end"
D"first start" "script end" "second start" "second end" "first end"
Attempts:
2 left
💡 Hint
Remember that await pauses the async function and lets the event loop run other code.