alert(typeof null); // object
allert(null instanceOf Object) // false
Undefined is not a reserved word. What this means is that you can actually define your own variable called undefined and give it whatever value that you want. If you do that then undefined will behave in the way you'd expect the variable that you created to behave and you may get entirely different results to what you would expect if you didn't redefine undefined.
alert(anything == undefined);
alert(anything == null);