We can do:
NaN = \'foo\'
as well as
undefined = \'foo\'
Why are they not reserved keywords?
Edit
Both NaN and undefined are values in JavaScript.
NaN is of number type. (it denotes "not a valid number").undefined is of undefined type. (when there is nothing assigned to a variable, JavaScript assigned undefined particular in var declaration).And also both are read-only values(property) of global window object.
So that's why JavaScript cannot make values as a reserved word.