Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

That's a mistake in the specification. We tried to fix that experimentally but it broke too many sites.

If you check the language specification you can see that `null` is in fact not an object - it's something called a 'primitive value type', just like numbers, strings, undefined and booleans.

Here http://es5.github.io/#x8 :)



Can you reconcile what you've just said with this excerpt from your guide:

> There's our first brush with JavaScript objects! Did I mention that strings are objects too? They have methods as well

Also, how do NaN and infinity fit in? I'm guessing they're special cases of Number types?


    "hello"
Not an object.

    new String("hello")
Object.

Along the way, autoboxing will convert a string to an object delegating to String.prototype if you write something like "hello".foobar(). But primitive value strings are not objects.


Good question. First - this is _not_ my guide. MDN is a wiki and anyone can edit it.

- NaN is just a number type . You have NaN in Java or C++ too. It's a way to represent "a number we can't represent"

- Good catch on strings, I'll edit it in.


> Also, how do NaN and infinity fit in? I'm guessing they're special cases of Number types?

Those are magical values from IEEE 754.

IEEE 754 is also the reason why there is a signed zero or why division by zero results in +/- Infinity.

  >>> 0 === -0
  true
  >>> 1/0 === 1/-0 // compares Infinity with -Infinity
  false




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: