> typeof null
"object"
Contrast that with: > typeof undefined
"undefined"
Go figure :)It is not ever correct to say that null in JavaScript is an object. Just ask javaScript itself:
Object.getPrototypeOf(null)
//=> TypeError: Object.getPrototypeOf called on non-objectIf 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 :)
> 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?
- 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.
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 "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.