In JavaScript, a variable is said to be “undefined” if it has been declared but not initialized. Whereas “null” is assigned to a variable whose value is absent at the time of initialization.
In simple words, when we do not assign any value to a variable, the JavaScript engine treats it as undefined. The null value is assigned by the programmer to indicate that the variable has nothing inside of it, but intends to have a value later in the program execution.
1. JavaScript undefined
Lets see below JavaScript statements to understand the undefined.
var myVar; //Variable declaration without assigning any value to it console.log( myVar ); //undefined console.log( typeof(myVar) ); //undefined console.log( undeclaredVar ); //Uncaught ReferenceError: undeclaredVar is not defined
If we see a variable with value in undefined then we know that:
- The variable has been declared in the program.
- There is no value assignment done for the variable.
- If we check the
typeof variable, it will beundefined. Please note thatundefinedis one of primitive types [string, number, boolean, null, undefined, symbol (new in ES6)] in JavaScript. - If a function returns
undefined, it didn’t returned any value.
The
undefinedis not a reserved keyword in JavaScript.
2. JavaScript null
The null represents intentional absence of value. Conceptually, it’s very much like null in other programming languages like Java, C# etc.
The null expresses a lack of identification, indicating that the variable points to no value or object.
var myVar = null; //Variable declared and assigned to null console.log( myVar ); //null console.log( typeof(myVar) ); //object
Please note that null is of type object with a valid value. The null object has no properties and it is immutable. Note that there can be only a single instance of the null object in the system at a time.
3. Differences between undefined and null Keywords
3.1. Using equality operators with null and undefined
Always remember to use strict equality operator ( === ) for comparing variables with null and undefined, when we want to clearly distinguish between null and undefined variables.
var myUndefinedVar; //undefined var myNullVar = null; //null myUndefinedVar == myNullVar; //true - which not correct as both are different myUndefinedVar === myNullVar; //false - correct behavior
3.2. null evaluates to zero
One major difference between null and undefined is in the way they are converted to primitive types.
nullis converted to zero (0) while performing primitive operations.undefinedis converted toNaN.
var myUndefinedVar; //undefined var myNullVar = null; //null myUndefinedVar + 100; //NaN myNullVar + 100; //100
Happy Learning !!
Comments