arguments代表的是实际传递的参数:
fn1( 1,2,3 ); // 实参——实际传递的参数
function fn1(){
aler(arguments[0]); // arguments => [ 1,2,3 ] —— 实参的集合
}
主要用在当实参数无法确定时。
下面写了一个小练习(加减简单计算器):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
function count() {
var num = 0;
var b = arguments.length-1; //简化代码
if (arguments[b] == '+') { //数组最后一位是加
for (var i = 0; i < b; i++) {
num += arguments[i];
}
}
else if (arguments[b] == '-') { //数组最后一位是减
for (var i = 1; i < b; i++) {
num += arguments[i]; //把除了数组第一个数字剩下的数字相加
}
num = arguments[0]-num; //用第一个数字减后面数字相加的和
}
return num; //最后返回num
}
alert(count(1,1,1,2,3,'+')); //8
alert(count(10,5,2,1,'-')); //2
</script>
</body>
</html>
还有一道相关的题:
var a = 1;
function fn2( a ){
arguments[0] = 3;
alert(a); // 3
var a = 2;
alert( arguments[0] ); // 2 上一条语句的优先级大于去实参数组里找a
}
fn2(a);
alert(a); // 1