Here's an example of why the "undefined argument" thing can be a horrible idea.
Let's say you get used to doing it. And you start applying it to other functions too, like this:
function doSomething(undefined) {
// blah blah blah
if( something == undefined) {
// problem
}
}
All good, right?
Let's say that this function is an event handler.
someElement.onclick = doSomething;
Oh dear. doSomething
gets passed an Event object, which is most certainly not undefined
!
void 0
is much more robust, as it doesn't rely on a quirk or an assumption to work.