Layers were the core of a method of dynamic HTML programming specific to Netscape 4. Each layer was treated as a separate document object in JavaScript. The content could be included in the same file within the non-standard <layer> element (or any other element with the positioning set to "absolute" via CSS) or loaded from a separate file with <layer src="URL"> or <div src="URL". It could also be generated via JavaScript with the layer = new Layer() constructor. The content would then be inserted into the layer with layer.document.write().

But in modern browsers, the functionality of layers is provided by using an absolutely-positioned <div>, or, for loading the content from an external file, an <IFrame>.

At the height of the Browser Wars, Netscape 4 and Internet Explorer had significantly different JavaScript implementations. Thus, layers could be used for browser detection. A JavaScript program would very often need to run different blocks of code, depending on the browser. To decide which blocks of code to run, a JavaScript program could test for support for layers, regardless of whether the program involved layers at all. Namely,

if (document.layers) {
  // ...code that would be executed only by Netscape browsers...
} else {
  // ...code that would be executed only by Internet Explorer...
}

References

edit