1. Functions are objects, as well as properties and methods. Because a function is an object, the function name is actually a pointer to a function object and is not bound to a function.
2. Using the function name without parentheses is to access the function pointer, not the calling function.
3. Because the function name in ECMAScript itself is a variable, the function can also be used as a value.
4. Inside the function, there are two special objects: arguments and this, where arguments is a class array object that contains all the parameters passed into the function. Arguments also has a callee property, which is a pointer to the function that owns the arguments object.
5. Each function consists of two properties: length and prototype. Where length indicates the number of named arguments that the function expects to receive. Prototype are the real place where all of their instance methods are saved.
JavaScript learning function type