Home >Web Front-end >JS Tutorial >Implementation principle of function parameters in js
The implementation of formal parameters and actual parameters of functions in js is different. When passing parameters, sometimes the actual parameters may not match the formal parameters. So how can they be matched? Where's the number? This is where we need to study the implementation principles of parameters in js.
We all know that the parameters passed in JS can be different. For example, we have a function:
<script type="text/javascript"> function one(a,b,c) { this.x = a; console.log(a); } one(1);</script>
The number we pass is only one 1, but there are three abc in the formal parameters. This is obviously not right, isn't it?
If we look at b and c at this time, undefined will be displayed. ps: For example, console.log(b).
Of course, there are no such two numbers. How can I find it for you?
So how does JS implement this situation when the actual parameters and formal parameters do not match up? Let's look at a piece of code:
<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><title>JavaScript中函数的形参和实参的区别</title></head><body> <script type="text/javascript"> function one(a,b,c) { return one.length; } function two(a,b,c,d,e,f,g){ return arguments.length; } console.log(one()); //3 console.log(two()); //0 </script></body></html>
Here we return one.length in the one function and arguments.length in the two function. You may have discovered that the output one() returns one.length which is the number of formal parameters, and argument.length is the number of actual parameters.
Did you understand it instantly?
We can even use arguments[0] to get the number of the actual parameter.
#But why can numbers without formal parameters be represented in an array-like manner? Okay, I know you're a Virgo and demand symmetry in everything. Unless your formal parameter is an array, you can use it this way. Otherwise, in the function we can only use the name of the formal parameter to obtain the actual parameters.
In C# and Java, the requirements for parameter type and number are very strict compared to JS. If they don’t match up at all, an error will be reported. And JS can become a relatively flexible language because of this design.
The above method is an implementation that JS relies on without forcing the equal number of formal parameters and actual parameters to be specified. As for the same type, any type in JS can be written as var a =..., what is the use of types? That’s why JS is said to be a weakly typed language!
Related recommendations:
Understanding of actual parameters, formal parameters and closures of js functions
JS function declaration and function expression analysis
The above is the detailed content of Implementation principle of function parameters in js. For more information, please follow other related articles on the PHP Chinese website!