Sentry Answers>JavaScript>

JavaScript check if variable exists (is defined/initialized)

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:

Click to Copy
if (myVariable)
Click to Copy
if (myVariable != null)
Click to Copy
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:

Click to Copy
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.

Click to Copy
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.

Click to Copy
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.

  • YoutubeHow Sentry.io saved me from disaster
  • ResourcesImprove Web Browser Performance - Find the JavaScript code causing slowdowns
  • SentryJavascript Error Monitoring & Tracing
  • ResourcesJavaScript Frontend Error Monitoring 101
  • Syntax.fmListen to the Syntax Podcast
  • Syntax.fm logo
    Listen to the Syntax Podcast

    Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.

    SEE EPISODES

Considered “not bad” by 4 million developers and more than 100,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.

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