Home >Web Front-end >JS Tutorial >Understanding javascript arguments objects and function parameters
viajavascript arguments object is mainly learned in the section of javascript function.
Three: argument object
In fact, the function body can receive the passed parameters through the argument object.
function box(){ return arguments[0] + '|'+arguments[1]; //得到每次参数的值 } alert(box('caibaojian',24));
The length attribute of the arguments object can get the number of parameters.
function box(){ return arguments.length; } alert(box(1,2,3,4,5)); 5
Today I mainly want to talk about some precautions in the usage process. Through an example, I will illustrate the difference between when the arguments object accesses the parameters of the function and when the row parameters define the parameters.
//code from http://caibaojian.com/js-arguments.html function func(a,b){ b=30; arguments[0] = arguments[1] return a; } function(1,2); 30 function(1); undefined //由于函数内arguments形参改变了,a=arguments[1],arguments[1]未定义,所以a最后输出undefined
Original link: http://caibaojian. com/js-arguments.html
via detects the number of parameters. Original text comes from: http://caibaojian.com/js-arguments.html
You can also use the arguments object to detect the number of parameters of the function, referencing the attribute arguments.length That’s it.
The following code will output the number of parameters used in each function call:
function howManyArgs() { alert(arguments.length); } howManyArgs("string", 45); howManyArgs(); howManyArgs(12);
via The above code will display "2", "0" and "1" in sequence.
Note: Unlike other programming languages, ECMAScript does not verify whether the number of parameters passed to the function is equal to the number of parameters defined by the function. Developer-defined functions can accept any number of arguments (up to 255, according to Netscape's documentation) without raising any errors. Any missing arguments will be passed to the function as undefined, and extra functions will be ignored.
Simulate function overloading
Use the arguments object to determine the number of parameters passed to the function to simulate function overloading:
function doAdd() { if(arguments.length == 1) { alert(arguments[0] + 5); } else if(arguments.length == 2) { alert(arguments[0] + arguments[1]); } } doAdd(10); //输出 "15" doAdd(40, 20); //输出 "60"
via When there is only one parameter, the doAdd() function adds 5 to the parameter. If there are two parameters, the two parameters are added and their sum is returned. So, doAdd(10) outputs "15", while doAdd(40, 20) outputs "60". Original text from: http://caibaojian.com/js-arguments.html
Although it is not as good as overloading, it is enough to avoid this limitation of ECMAScript.