Log in to like this post! Type of Undeclared Variable in JavaScript: What is it? Dhananjay Kumar / Friday, April 5, 2019 Have you ever thought, what is type of undeclared variable in JavaScript? I know, the first thing that might come to mind is: how can an undeclared variable have a type? Yes, in JavaScript it is possible. To understand it, let us start with understanding types in JavaScript. There are seven built in types in JavaScript. They are as follows: null undefined boolean number string object symbol (added on ES6) Each variable with assigned value has a type. Let us consider the code listed below: var foo = 9; console.log(typeof (foo)); // number var koo; console.log(typeof (koo)); // undefined var too = 'Infragistics'; console.log(typeof (too)); // string As you can see in the above snippet, if there is no value assigned then type of variable is undefined. So far so good, we saw that variable with no assigned value is undefined. Let us consider the next code snippet: var koo; console.log(koo); // undefiend console.log(typeof (koo)); // undefined We have created a variable koo and have not assigned any value to it. Now both value and type of koo are set to undefined. Now that you understand type and value associated with undefined, let’s move on to null. In JavaScript, null is a primitive type. However, type of null value is object. Consider code listed below: var foo = null; console.log(foo); // null console.log(typeof (foo)); // object You may consider it as a legacy bug that type of null value is object in JavaScript. Finally, yet equally as important, in JavaScript a variable which is not declared also has a type. The declared variable type is undefined. console.log(foo);// error foo is not defined console.log(typeof (foo)); // undefined When you read the value of variable, which is not declared, JavaScript will return an error “not defined”, and will return its type as undefined In addition, keep in mind that in world of JavaScript not defined is not the same as undefined. I hope now you understand various primitive types in JavaScript.