Javascript Anonymous Functions and Global Variables

Posted by Jonathan Swift on Stack Overflow See other posts from Stack Overflow or by Jonathan Swift
Published on 2010-05-18T14:02:59Z Indexed on 2010/05/18 14:10 UTC
Read the original article Hit count: 213

I thought I would try and be clever and create a Wait function of my own (I realise there are other ways to do this). So I wrote:

var interval_id;
var countdowntimer = 0;

function Wait(wait_interval) {
  countdowntimer = wait_interval;

  interval_id = setInterval(function() {
    --countdowntimer <=0 ? clearInterval(interval_id) : null;
  }, 1000);

  do {} while (countdowntimer >= 0);
}

// Wait a bit: 5 secs
Wait(5);

This all works, except for the infinite looping. Upon inspection, if I take the While loop out, the anonymous function is entered 5 times, as expected. So clearly the global variable countdowntimer is decremented.

However, if I check the value of countdowntimer, in the While loop, it never goes down. This is despite the fact that the anonymous function is being called whilst in the While loop!

Clearly, somehow, there are two values of countdowntimer floating around, but why?

© Stack Overflow or respective owner

Related posts about JavaScript

Related posts about anonymous-function