How to check if a variable exists or defined in JavaScript

To check if a variable is defined or initialized in JavaScript:

  1. Use the typeof operator, e.g. typeof z !== 'undefined'.
  2. If the value returned by the typeof operator is not the "undefined" string, then the variable is defined.
let a,
  b = 5

if (typeof a !== 'undefined') {
  console.log(`Variable a is defined`)
}

if (typeof b !== 'undefined') {
  console.log(`Variable b is defined`)
}

// Output => Variable b is defined

The first statement does not execute because the variable a is declared but not assigned a value. Therefore, it is automatically assigned the value undefined.

The second statement gets executed because the variable b is declared and initialized with a value 5.

The typeof operator, unlike the other operators, does not throw a ReferenceError exception when used with a variable that is not declared:

// => Attempt to access an undeclared `c` variable
if (typeof c !== 'undefined') {
  console.log(`Variable c is defined`)
}

// => Throws ReferenceError: c is not defined
if (c !== 'undefined') {
  console.log(`Variable c is defined`)
}

// => Throws ReferenceError: c is not defined
if (c) {
  console.log(`Variable c is defined`)
}

However, the typeof operator would throw an exception if you use the typeof operator before declaring a variable with let or const, as shown below:

// => Throws ReferenceError: Cannot access 'c' before initialization
if (c !== 'undefined') {
  console.log(`Variable c is defined`)
}

let c = 10

✌️ Like this article? Follow me on Twitter and LinkedIn. You can also subscribe to RSS Feed.

You might also like...

Digital Ocean

The simplest cloud platform for developers & teams. Start with a $200 free credit.

Buy me a coffee ☕

If you enjoy reading my articles and want to help me out paying bills, please consider buying me a coffee ($5) or two ($10). I will be highly grateful to you ✌️

Enter the number of coffees below:

✨ Learn to build modern web applications using JavaScript and Spring Boot

I started this blog as a place to share everything I have learned in the last decade. I write about modern JavaScript, Node.js, Spring Boot, core Java, RESTful APIs, and all things web development.

The newsletter is sent every week and includes early access to clear, concise, and easy-to-follow tutorials, and other stuff I think you'd enjoy! No spam ever, unsubscribe at any time.