【函数】♣arguments
<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="utf-8" /> <title></title></head><body> <script> // 尽管定义 JavaScript 函数时有固定数目的命名参数,但当调用这个函数时,传递给它的参数数目却可以是任意的。Arguments 对象允许完全地存取那些实际参数值,即使某些或全部参数还没有被命名。假定定义了一个函数f,要传递给它一个实际参数x。如果用两个实际参数来调用这个函数,那么在函数体内,用形式参数名 x 或 arguments[0] 可以存取第一个实际参数。而第二个实际参数只能通过 arguments[1] 来存取 // 验证调用函数时是否使用了正确数目的实际参数 function f1(x, y, z) { if (arguments.length !== 3) { console.log('function f called with ' + arguments.length + ' arguments, but it expects 3 arguments.'); } } f1(1, 2); // 接受任意数目的实际参数,然后返回其中最大的参数的值 function max() { var m = Number.NEGATIVE_INFINITY;// NEGATIVE_INFINITY 属性表示小于 Number.MIN_VALUE 的值。该值代表负无穷大 for (var i = 0, len = arguments.length; i < len; i++) { if (arguments[i] > m) { m = arguments[i]; } } return m; } console.log(max(1, 10, 100, 10000, 4, 5, 6)); function f2(x) { console.log(x); arguments[0] = null; console.log(x); } f2(2); // Arguments 对象还定义了 callee 属性,用来引用当前正在执行的函数。这个属性没有太大用处,但它可以用来允许对未命名的函数递归地调用自身 console.log(function (x) { if (x <= 1) { return 1; } return x * arguments.callee(x - 1); } (3)); function f3(x, y) { arguments[1] = 10; console.log(y); console.log(arguments[1]); } f3(1, 2);// 10 10 f3(1);// undefined 10 </script></body></html>
《JavaScript权威指南》
深入理解JavaScript系列(20):《你真懂JavaScript吗?》答案详解
http://www.cnblogs.com/TomXu/archive/2012/02/10/2342098.html
TAG: