Q:

Why does typeof function return "function"?

If both array and function are object subtypes, then why does typeof function return "function" and typeof array return "object"?

A:

Because the specification defines different behaviour for typeof when it interacts with objects implementing [[Call]] (i.e. functions).

