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?
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 actionable, code-level insights to resolve JavaScript performance bottlenecks and errors.
Create a free Sentry account
Create a JavaScript project and note your DSN
Grab the Sentry JavaScript SDK
<script src="https://browser.sentry-cdn.com/7.112.2/bundle.min.js"></script>
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.