undefined is technically able to be redefined, so it is not a reserved word. As a result, I usually write code in an anonymous function that forces undefined to be an undefined variable, as so:
(function (undefined) {
"use strict";
var o = {
test: "testvalue"
};
if (o.test === undefined) {
// Do stuff here
} else {
// Do other stuff there
}
}());
However, JSLint mentions the following error:
Problem at line 1 character 15: Expected an identifier and instead saw 'undefined' (a reserved word).
Why does JSLint complain about undefined being an reserved word, when code can arbitrarily redefine the variable? I know that you can use typeof x === "undefined"; I just wanted to see why this method wouldn’t work.
Your method does work. Just because JSLint doesn’t like it doesn’t make it a cardinal sin.
Try JSHint instead (for more sanity).