As per http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf, JavaScript has 6 types: undefined, null, boolean, string, number and object.
var und; console.log(typeof und); // <-- undefined  var n = null; console.log(typeof n); // <--- **object**!  var b = true; console.log(typeof b); // <-- boolean  var str = "myString" console.log(typeof str); // <-- string  var int = 10; console.log(typeof int); // <-- number  var obj = {} console.log(typeof obj); // <-- object   Question 1:
Why is null of type object instead of null?
Question 2:
What about functions?
var f = function() {}; console.log(typeof f); // <-- function   Variable f has type of function. Why isn't it specified in the specification as a separate type?
Thanks,
The Eight Types of JavaScript. JavaScript has 8 types: undefined, null, boolean, number, bigint, string, symbol, and object.
JavaScript allows you to work with three primitive data types: numbers, strings of text (known as “strings”), and boolean truth values (known as “booleans”). JavaScript also defines two trivial data types, null and undefined, each of which defines only a single value.
There are seven primitive data types, Number, String, Boolean, NULL, Undefined and Symbol and one non-primitive data type 'object'. There are differences between NULL and undefined data types though both contain the same value.
JavaScript has seven built-in types: null , undefined , boolean , number , string , object , and symbol . They can be identified by the typeof operator. Variables don't have types, but the values in them do.
About typeof null == 'object', this is a mistake that comes since the early days, and unfortunately this mistake will stay with us for a long time, it was too late to be fixed in the ECMAScript 5th Edition Specification.
About the functions, they are just objects, but they have an special internal property named [[Call]] which is used internally when a function is invoked.
The typeof operator distinguish between plain objects and functions just by checking if the object has this internal property.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With