在 JavaScript 中,arguments 对象是比较特别的一个 对象,实际上是当前 函数 的一个内置属性。也就是说所有函数都内置了一个 arguments 对象。
arguments 对象中存储了传递的所有的 实参,arguments 是一个 伪数组,因此可以进行遍历。
function myFunc(){
//arguments[0];
//arguments[1];
//arguments[2];
}
在函数内部,arguments 对象中存储了传递的所有的实参,且 arguments 是一个伪数组,因此我们可以通过下标索引获取每一个参数,也可以进行遍历获取所有参数。
函数 | 说明 |
---|---|
arguments.callee | arguments 所在的函数,指向当前执行的函数 |
arguments.caller | 指向调用当前函数的函数 |
arguments.length | 获得长度,实参的个数 |
arguments[i] | 通过遍历索引,获得每个实参 |
通过 JavaScript arguments获取函数所有参数
<!DOCTYPE html>
<html>
<head>
<title>JavaScript arguments</title>
<script type="text/javascript">
console.log("嗨客网(www.haicoder.net)");
function walk(){
for(var i = 0; i < arguments.length; i++){
console.log("arg =", arguments[i]);
}
}
walk(1, 50, 100, 500);
</script>
</head>
</html>
程序运行后,控制台输出如下:
我们定义了一个函数 walk,该函数声明时没有显式声明任何参数,在该函数里,我们使用 for 循环 加上 arguments 遍历了该函数的所有的实参。
最后,在调用该函数时,我们传入了四个参数,我们发现,我们在 walk 函数里面通过 arguments 获取了所有传入的参数。
通过 JavaScript arguments 参数求和
<!DOCTYPE html>
<html>
<head>
<title>JavaScript arguments</title>
<script type="text/javascript">
console.log("嗨客网(www.haicoder.net)");
function sum(){
var sum = 0;
for(var i = 0; i < arguments.length; i++){
sum += arguments[i];
}
return sum;
}
var ret = sum(5, 50, 500, 5000);
console.log("Ret =", ret);
</script>
</head>
</html>
程序运行后,控制台输出如下:
我们定义了一个函数 sum,该函数声明时没有显式声明任何参数,在该函数里,我们使用 for 循环遍历 arguments 的每一个函数并求和。
最后,在调用该函数时,我们传入了四个参数,最终,我们求出了这四个参数的和。
通过 Array.from 函数将 JavaScript arguments 转成数组
<!DOCTYPE html>
<html>
<head>
<title>JavaScript arguments转数组</title>
<script type="text/javascript">
console.log("嗨客网(www.haicoder.net)");
function walk(){
var args = Array.from(arguments);
console.log(args);
}
walk(5, 50, 500, 5000);
</script>
</head>
</html>
程序运行后,控制台输出如下:
我们在函数 walk 中,使用 Array.from 将函数的 arguments 转成了数组。
在 JavaScript 中,arguments 对象是比较特别的一个对象,实际上是当前函数的一个内置属性。也就是说所有函数都内置了一个 arguments 对象。
arguments 对象中存储了传递的所有的实参,arguments 是一个伪数组,因此可以进行遍历。