属性
指向当前执行的函数。
指向调用当前函数的函数。
指向传递给当前函数的参数数量。
返回一个新的Array迭代器对象,该对象包含参数中每个索引的值。
注意:现在在严格模式下,arguments
对象已与过往不同。arguments[@@iterator]
不再与函数的实际形参之间共享,同时caller属性也被移除。
例子1:遍历参数求和
function add() {
var sum =0,
len = arguments.length;
for(var i=0; i<len; i++){
sum += arguments[i];
}
return sum;
}
add() // 0
add(1) // 1
add(1,2,3,4); // 10
例子2:定义连接字符串的函数
function myConcat(separator) {
var args = Array.prototype.slice.call(arguments, 1);
return args.join(separator);
}
//你可以传递任意数量的参数到该函数,并使用每个参数作为列表中的项创建列表。
myConcat(", ", "red", "orange", "blue");
例子3:剩余参数、默认参数和解构赋值参数
function foo(...args) {
return args;
}
foo(1, 2, 3); // [1,2,3]
例子4:立即函数用递归求阶乘方法
// callee指向当前执行的函数。
var jc = (function (n) {
if (n == 1) return 1;
return n * arguments.callee(n - 1);
}(4))
console.log(jc)
例子5:caller指向调用当前函数的函数
function test() {
fun1();
}
function fun1() {
console.log(fun1.caller)
}
test();