Some progressively better ways to strictly check for undefined in JavaScript.

1. Falsiness


Bad Checking if a property is falsy, will be true for undefined. But it will be true for any falsy JavaScript value, including things like 0 and ''.

2. Strict equality

thing.prop === undefined;

Meh Checking if a property is strictly equal to undefined can be problematic, because in a given scope, undefined can be made to be something else. For example, here is how to bind undefined to 2:

(function (undefined) { console.log(undefined === 2); })(2);

3. typeof

typeof thing.prop === 'undefined';

Good Calling typeof on an undefined property returns the string 'undefined'. There is  a terser way of checking this though.

4. void 0

thing.prop === void 0;

Sweet (and short) Using void with anything always returns undefined. It's also the tersest check.