Question regarding continue;

What does this "continue" do? For each collider we are checking to see if not hit? if not hit continue?

for (var hit in colliders) {
if (!hit)
continue;
if (hit.rigidbody)
{
hit.rigidbody.AddExplosionForce(explosionPower,
explosionPosition, explosionRadius, 3.0);

This is a good example of missing braces and indentation leading to confusing script.

With added braces and indentation, the script looks like this:

for (var hit in colliders) {
    if (!hit) {
        continue;
    } else {
        if (hit.rigidbody) {
            hit.rigidbody.AddExplosionForce(explosionPower,
            explosionPosition, explosionRadius, 3.0);
        }
    }
}

The ! symbol means "not", so in this code, it appears that it is intended to check whether each item in the colliders array is a valid item (and not null). The continue keyword makes the program skip around to the next iteration of the 'for' loop, if the item turns out to be invalid.

However in Unity there are certain situations where this type of check won't work properly - instead you need to actually use == null. This also applies to the second check which should be written: if (hit.rigidbody != null).

And finally, because there is nothing else in the loop besides what happens if the "hit" object isn't null, and has a collider, you really don't need to use "continue" at all - simply do nothing if the conditions aren't met. The two conditions can also be tested in a single "if" statement, using the "and" (&&) operator.

So the code could end up looking like this:

// apply an explosion force to every valid object with a rigidbody:
for (var hit in colliders) {
    if (hit != null && hit.rigidbody != null) {
        hit.rigidbody.AddExplosionForce(explosionPower,
        explosionPosition, explosionRadius, 3.0);
    }
}