Please explain this Javascript closure exercise

Viewed 2557

I'm a javascript noob trying to wrap my head around the closure exercise below.

Now, I know the result is 122. Can anyone walk me through this step by step (what gets passed to what), so I can understand how closures work?

var hidden = mystery(3);
var jumble = mystery3(hidden);
var result = jumble(2);

function mystery ( input ){
  var secret = 4;
  input+=2;
  function mystery2 ( multiplier ) { 
    multiplier *= input;
    return secret * multiplier;
  }
  return mystery2;
}
function mystery3 ( param ){
  function mystery4 ( bonus ){
    return param(6) + bonus;
  }
  return mystery4;
}
1 Answers
Related