I think my general guideline is whether the code paths have equal importance or not. I consider guard code (ie. stopping a invalid/nonsensical case) less important than the actual "meat"  of the function, even if the "meat" doesn't make sense in some cases. So because of this I won't use an `else` if the `if` was guard code.

<pre>
// The important part here is after the guard code
function activateFlange() {
    if (!this.flange) {
        return;
    }

    this.flange.open();
}
</pre>

However, if the choice is between 2 meaningful alternatives (as it is here) then it makes logical sense for one to be `if` and the other `else`. I consider the 2 code paths of equal importance.

<pre>
// In this example both code paths have equal importance
function getLayerName() {
    if (this.wfsLayer) {
        return this.wfsLayer.name;
    }
    else {
        return this.params.layer;
    }
}
</pre>

So that's pretty much how I choose between the options. I'm not sure what others feelings are.

So you generally won't use an explicit `else`?