> typeof null
"object"
Contrast that with: > typeof undefined
"undefined"
Go figure :) > typeof null
"object"
Contrast that with: > typeof undefined
"undefined"
Go figure :)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 :)
> 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.
- 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
falseIt 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-object