JavaScript check if variable exists (is defined/initialized)

David Y.

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.

Get Started With Sentry

Get actionable, code-level insights to resolve JavaScript performance bottlenecks and errors.

  1. Create a free Sentry account

  2. Create a JavaScript project and note your DSN

  3. Grab the Sentry JavaScript SDK

<script src="https://browser.sentry-cdn.com/7.112.2/bundle.min.js"></script>
  1. Configure your DSN
Sentry.init({ dsn: 'https://<key>@sentry.io/<project>' });

Loved by over 4 million developers and more than 90,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.

Share on Twitter
Bookmark this page
Ask a questionJoin the discussion

Related Answers

A better experience for your users. An easier life for your developers.

    TwitterGitHubDribbbleLinkedinDiscord
© 2024 • Sentry is a registered Trademark
of Functional Software, Inc.