Function type
The function type is undoubtedly a very important thing in js.
1. This thing is first of all an object, which means it is a reference type. Statement: When I hear that it is an object, I have the illusion that its base class is object. No,
It and object are two independent things. When you typeof function, what is returned is funciton not object
2. Each function is an instance of the Function object, which has the same properties and methods as other reference objects. Since it is an object, the function name is a pointer to the function object
Syntax support for function declarations:
<script> //方式1 function fun(num1,num2){ return num1+num2; } //方式2 var fun=function(num1,num2){ return num1+num2; }; //方式3 var fun=new Function("n1","n2","return n1+n2"); </script>
Explanation: There are three ways to declare a function, but they are different.
Method 1 is understood as a declaration of a function, and method 2 and 3 are understood as function expressions. (Method 3 is not recommended because it will cause the code to be parsed twice. First, the regular ECMAScript code is interpreted, and then the incoming parameters are interpreted. This
Writing, the number of parameters can be N, but the last parameter is regarded as the function body)
The main reason why it is different is that the js parser parses function declarations and function expressions differently. The parser will read the function declaration first, and the js engine will automatically put the function declaration at the top of the execution environment during execution.
Function expressions are different. When the function expression is executed, it will actually be interpreted and executed. It is important to understand this!
Look at the code
<script> console.log(typeof fun); //"function" console.log(typeof fun2); //"undefined" console.log(typeof fun3); //"undefined" function fun(n1,n2){ return n1+n2; } var fun2=function(n1,n2){ return n1+n2; } var fun3=new Function("n1","n2","return n1+n2;"); </script>
3. Why is the function not overloaded?
This issue should be considered from the language characteristics of js. As mentioned in Article 2, the function name is just a pointer to the function object. It will be clear if you understand it based on the concept of pointers.
Look at the code example:
<script> function fun(n1){ return n1+100; } function fun(n1){ return n1+200; } console.log(fun(1));// 201 //以上写法在解析后应为 var fun=function(n1){ return n1+100; } fun=function(n1){ return n1+200; } // fun 的引用被覆盖了 console.log(fun(1));// 201 </script>
That’s it for today. It’s all about basic concepts. I hope it will be helpful to those who have blind spots in this area! If there is anything that needs correction, I hope you will leave a comment and correct me.
The above is the entire content of this article, I hope you all like it.