I am thinking now, but the reason I think NaN and undefined are not keywords is because you usually don't assign these values ββto variables.
var x = undefined; // doesn't make sense, use null! var y = NaN; // You can't do much with this variable!
undefined basically means uninitialized , and if you want to make it clear that the value is unknown, you use null . Thus, undefined usually means not initialized or the result of incorrect JavaScript code.
NaN rarely assigned manually, simply because you cannot do much with this value. This is usually the result of an erroneous calculation. The creators of JavaScript probably did not want to give this value the appearance of primitive values.
In addition, NaN also present in other languages, and it is not used as a keyword. For example: In C# NaN, Double.NaN is represented, since you do not distinguish between floating point and integer values ββin JavaScript, I assume that why they put NaN using global identifiers!
Hope this clarifies the situation!
NomenNescio Dec 10 2018-12-12T00: 00Z
source share