This component includes all functionality related to JavaScript manipulation of window, document and navigator objects that are available in Navigator 4.x and earlier, and that was never defined by the W3C.

I'm still interested in understanding why it has to be undefined and not null.
Shouldn't the if (document.layers) checks that are out there still fail for a
null value? Having said that, I agree that it probably makes sense to do what a
non-layers browser would do i.e. return undefined.

Any theoretical considerations aside, we want code of this form:
if (document.layers) { /* Nav4 code */ }
else if (document.all) { /* IE4+ code */ }
else if {document.getElementsById) { /* Nav5 W3C DOM code */ }
... to work smoothly on Nav5 as there's a *lot* of it out there already, and we
want to make it as easy as possible for developers who already support Nav4/IE4
to upgrade and support Nav5, maintaining backward compatibility if possible. See
http://developer.netscape.com/docs/examples/javascript/browser_type.html for
more detail about this.
It seems that code of that form will work correctly regardless of whether we
return undefined or null. If I'm correct about that, then I'm fine with having
it return undefined (which does seem logical) rather than null.
If there is *ANY* way in which having document.layers return undefined rather
than null will make content/JS developers' lives harder, we should do whatever
will make their lives easier. Vidur, please use me if you need
chatting/research.
Either way, fixing this is a low priority. Moving to M13.