JavaScript variable scoping trickery

I almost fell victim to this over the weekend, so thought I’d share a common JavaScript gotcha. What does the following line do?

var start = stop = null;

Most people will respond, “define a variable called start and a variable called stop and then set them both to null.” That is generally correct, but not specific enough. What actually happens is that a local variable called start is defined and a global variable named stop is defined; both are then set to null. The var operator applies to start, not to stop because stop is part of the initialization (to the right of the equals sign). This code can be rewritten to create two local variables like this:

var start = null, stop = null;

Now, the var operator applies to both start and stop, creating two local variables (the comma indicates another variable being defined). It’s little things like this that make me love JavaScript.

Master JavaScript Promises

Free E-book - Understanding JavaScript Promises

What You'll Learn

  • Promise fundamentals and concepts
  • Real-world promise implementations
  • Best practices and patterns
  • Error handling techniques

Demystify JavaScript promises with practical examples and expert insights.

Download Your Free Copy

The community edition arrives in your inbox within minutes.