In our continuing Data Type saga, I want to turn our attention to some specialized data types.
- Undefined
- Null
These are used in specific circumstances and do not mean the same thing. These are what I would call ‘quasi-data types’. What I mean by that is that you typically do not set out to create a variable as undefined or null (sometimes). But knowing these and how they typically work and can be utilized in our programming can be helpful.
Undefined
A variable is undefined when it has not been assigned any data. Typically, you do not want to have variables that are undefined, but is happens sometimes. When it does occur, it usually means your code is broken. Here is an example…
[code lang=”js”]
var myVariable;
document.write(myVariable);
[/code]
In the code above, I create a variable (myVariable), but I do not instantiate it. It is created, but nothing is in it, therefore, it is undefined. So the document write statement would fail. To avoid this, you typically assign a value out of the gate. This would avoid the undefined error and allow you to test that variable. For example, if I set the value of myVariable to zero (0), then I could test if it is zero. If it is, then I know it has not been set yet.
[code lang=”js”]
var myVariable = 0;
if(myVariable == 0) {
// Do something;
}
[/code]
 Null
Nulls, which some have equated with undefineds, are not undefined. Nulls are objects and undefineds are not. The reason some have equated null with undefined is because if you test undefined == null, this returns true. The problem with this is ‘==’ performs type coercion. Proper equality testing would utilize ‘===’, which does not perform the type coercion.
We can test for nulls as follows…
[code lang=”js”]
var myVariable = null;
if (myVariable === null) {
// Do something
}
[/code]
So we can check if a variable has been defined or not and we can even test whether a variable is null or not. Then, our code can make decisions based upon the results.
Happy Coding!