It’s an idiomatic check to see if the script is being run in a web-page inside a web-browser or not.
One might assume that JavaScript only runs in web-pages as that’s what it was originally designed for, but this isn’t true: JavaScript is a versatile language that can also be used for writing server-side code in Node.js or IIS’ Active Server Pages (since 1996!), or inside “web workers”, which are scripts for web-pages that run in the background.
In a webpage, there are several intrinsic objects, such as window
, other environments (like Node.js) won’t have window
but might have other objects like console
(well, console
now exists in most browsers now, but it wasn’t originally).
For example, in different contexts different objects are available in the script’s global scope (this list is not exhaustive):
- In all JavaScript contexts a standard set of objects is available, such as:
Math
andDate
Object
,Number
,Function
,String
, etc (objects representing built-in types), etc
- In a web-page’s script (inside
<script>
tags):- The
Window
(interface) is exposed as thewindow
global object, which is also the object that is the global scope (so declaringvar foo
in the global scope actually creates a propertywindow.foo
!) - So the
document
global-object is actually accessing thewindow.document
property.
- The
- In a Node.js server-side script:
- As Node.js isn’t a web-browser with a DOM there is no
window
global object nor properties likedocument
ornavigator
, but instead Node.js exposes its API through global objects like:console
process
exports
- As Node.js isn’t a web-browser with a DOM there is no
- In a web-page’s Web Worker script:
- In a Web Worker there isn’t a
window
object either, so instead the global scope is anWindowOrWorkerGlobalScope
object which exposes browser-provided objects via properties like:caches
indexedDB
origin
- In a Web Worker there isn’t a
- In IIS Active Server Pages using JScript (instead of VBScript):
response
(for writing to the response stream)request
(for reading from the incoming HTTP request)Application
andSession
(for persisting data between requests)
- In Microsoft Windows’ Shell Script Host
- The
WScript
global object exposes functionality from the script host.
- The