Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I check whether a variable is defined in JavaScript? [duplicate]

Which method of checking if a variable has been initialized is better/correct? (Assuming the variable could hold anything (string, int, object, function, etc.))

if (elem) { // or !elem 

or

if (typeof elem !== 'undefined') { 

or

if (elem != null) { 
like image 299
Samuel Liew Avatar asked Feb 25 '11 03:02

Samuel Liew


People also ask

How do you check if a variable is defined in JavaScript?

Use the typeof operator to check if a variable is defined or initialized, e.g. if (typeof a !== 'undefined') {} . If the the typeof operator doesn't return a string of "undefined" , then the variable is defined. Copied!

How do you know if a variable is undefined?

So the correct way to test undefined variable or property is using the typeof operator, like this: if(typeof myVar === 'undefined') .

How check variable is undefined or not in JavaScript?

When using x === undefined , JavaScript checks if x is a declared variable that is strictly equal to undefined . If you want to check if x is strictly equal to undefined regardless of whether is has been declared or not, you should use typeof x === 'undefined' .


2 Answers

You want the typeof operator. Specifically:

if (typeof variable !== 'undefined') {     // the variable is defined } 
like image 116
Jim Puls Avatar answered Sep 23 '22 12:09

Jim Puls


The typeof operator will check if the variable is really undefined.

if (typeof variable === 'undefined') {     // variable is undefined } 

The typeof operator, unlike the other operators, doesn't throw a ReferenceError exception when used with an undeclared variable.

However, do note that typeof null will return "object". We have to be careful to avoid the mistake of initializing a variable to null. To be safe, this is what we could use instead:

if (typeof variable === 'undefined' || variable === null) {     // variable is undefined or null } 

For more info on using strict comparison === instead of simple equality ==, see:
Which equals operator (== vs ===) should be used in JavaScript comparisons?

like image 41
Samuel Liew Avatar answered Sep 23 '22 12:09

Samuel Liew