On Sun, May 11, 2014 at 11:43 PM, Sakthipriyan Vairamani <
[email protected]> wrote:

> console.log(typeof null);
>  ​# object​
>
> ​console.log(Object.prototype.toString.call(null));
> #​
> ​ [object Null]​
>
>
> ​This means that null​
> ​ is expected to be an object. But,
>

> ​
> ​console.log(Object.keys(null));​
>
> ​# TypeError: Object.keys called on non-object​
>
>
>  ​The error message says that null​
> ​ is a non-object. It contradicts the result of typeof and toString.
>

This has been discussed extensively on this list over many years. Here is
the last relevant strawman proposal:
http://wiki.ecmascript.org/doku.php?id=harmony:typeof_null

The TL;DR: typeof null is not going to change because it's too much of
web-breaking risk.


>
> *Question 1:* Why does it behave so? Is this something which has to be
> fixed?
>

No.


>
> Also, null is not a keyword <http://es5.github.io/#x7.6.1.1>, but when I
> do
>
> ​
> ​var null = 1;
> # SyntaxError: Unexpected token null​
>
>
> ​It fails with the Syntax Error, since it is a Reserved 
> Word<http://es5.github.io/#x7.6.1>
> .
>
> *Question 2:* What is the purpose of keeping null and boolean literals as
> "Reserved words" and not just keywords?
>
>

I apologize for answering this with another question, but what would the be
the point in changing them to keywords?

Rick
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to