JavaScript check if variable exists (is defined/initialized)

David Y.
jump to solution

The Problem

How can I check whether a variable is defined in JavaScript? I am considering the following options:

if (myVariable)
if (myVariable != null)
if (typeof myVariable !== "undefined")

Assuming the variable is of any type, which of these is the most accurate way of checking it is defined? Is there another, better way?

The Solution

To check that a variable is defined, avoiding false positives and false negatives, we must check that its type is not undefined, using the typeof operator and strict inequality:

let myVariable;

if (typeof myVariable !== "undefined") {
  console.log("myVariable is defined!");
} else {
  console.log("myVariable is not defined!"); // this line will be printed
}

The expression if (myVariable) will produce false negatives, as it fails for falsy values of myVariable. For example, if myVariable is defined as 0 or false, this check will fail.

const myVariable = 0;

if (myVariable) {
  console.log("myVariable is defined!");
} else {
  console.log("myVariable is not defined!"); // this line will be printed, even though myVariable is defined above
}

The expression if (myVariable != null) will produce false positives, as a variable can be defined with the value null.

const myVariable = null;

if (myVariable !== null) {
  console.log("myVariable is defined!");
} else {
  console.log("myVariable is not defined!"); // this line will be printed, even though myVariable is defined above
}

if (typeof myVariable !== 'undefined') works best as it is highly specific and eliminates both false positives and false negatives.

For more about the difference between undefined and null, see this answer.

TypeError: Cannot read properties of undefined
Shivan M.
Fixing Load Failed errors in JavaScript
Richard Roggenkemper
Object mutability in JavaScript
Naveera A.

Considered "not bad" by 4 million developers and more than 150,000 organizations worldwide, Sentry provides code-level observability to many of the world's best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.

Sentry