Global variables are, as you probably guessed, considered bad. Any other code on the page can modify them - often because another programmer accidentally picks the same name. You can try to mitigate this effect by choosing really strange names, but then you get a bunch of really strange names.
There are a lot of ways to minimize the number of global variables you create in JavaScript. One way is to store all your variables under a single object - that's what jQuery does (Technically jQuery uses two - $ and jQuery.)
If you know what you're doing, you often don't have to create any global variables - just wrap all your code in a function that you invoke immediately.
Bad example - pollutes the global namespace unnecessarily:
var appleCount = 0; function addApple() { appleCount = appleCount + 1; } function howManyApples() { return appleCount; } addApple(); alert(howManyApples());
Better example - only creates one global variable:
var appleCounter = { count: 0, add: function() { this.count = this.count + 1; }, howMany: function() { return this.count; } }; appleCounter.add(); alert(appleCounter.howMany());
Best example - creates no global variables:
(function(){ var appleCounter = { count: 0, add: function() { this.count = this.count + 1; }, howMany: function() { return this.count; } }; appleCounter.add(); alert(appleCounter.howMany()); })();