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 (opens in a new tab)
  • ResourcesImprove Web Browser Performance - Find the JavaScript code causing slowdowns (opens in a new tab)
  • SentryJavascript Error Monitoring & Tracing (opens in a new tab)
  • ResourcesJavaScript Frontend Error Monitoring 101 (opens in a new tab)
  • Syntax.fmListen to the Syntax Podcast (opens in a new tab)
  • Syntax.fm logo
    Listen to the Syntax Podcast (opens in a new tab)

    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 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.