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.
- 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
- Listen to the Syntax Podcast
![Syntax.fm logo]()
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.
