在一个函数体内,标识符arguments具有特殊含义.
Arguments对象是一个类似数组的对象
eg:
验证函数参数的正确数目
function f(x, y, z) { if (arguments.length != 3) { throw new Error("function with " + arguments.length + "arguments, but it expects 3 arguments.") // now do the actual function } }
eg:
简单的max函数能接受任意数目的实际参数
function max() { var m = Number.NEGATIVE_INFINITY; for (var i = 0; i < arguments.length; i++) { if (arguments[i] > m) m = arguments[i]; } return m; }
var largest = max(1, 100, 92, 8, 5, 108);
arguments还定义了callee属性,用来引用当前正在执行的函数
eg:
计算阶乘的函数
function f(x) { if (x <= 1) return 1; return x * arguments.callee(x - 1); }