undefined and not defined in JavaScript refer to memory space in JavaScript, but there is a very clear distinction between them. The variable name being accessed will not be declared if it does not exist in memory space, and it will be undefined if it does exist in memory space but has not yet been given a value.
If you try to use a variable in JavaScript that doesn’t exist or hasn’t been declared, JavaScript will throw an error saying that the variable undefined, and the script will then cease running. However, it will return undefined if typeof undeclared variable is used.
Let’s first clarify the distinction between a declaration and a definition before moving on to more detailed discussion.
The fact that we are announcing the existence of a variable and the necessity for memory allocation makes the variable x a declaration even though its value has not yet been determined.
var x; // declaring x
console.log(x); // output: undefined
var x = 1 serves as both a declaration and a definition; the declaration and value assignment for the variable x occur inline; this process is known as “initialization”. Both variable and function declarations in JavaScript rise to the top of the scope in which they are made, followed by assignment; this sequence of actions is referred to as “hoisting.”
An undefined variable can be declared. When we attempt to access it, the outcome will be undefinable.
var x; // Declaration typeof x === 'undefined'; // Will return true
A variable cannot be defined or declared. The result will be not defined if we attempt to reference such a variable.
console.log(y); // Output: Reference Error: y is not defined
Difference between undefined and not defined
undefined | not defined |
---|---|
It functions similarly to when a variable is declared in code but not assigned a value before being printed. | It functions similarly to when we try to call a variable even though we haven’t declared it. |