David Y.
—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.
Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.
SEE EPISODESConsidered “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.