日期:2014-05-16  浏览次数:20407 次

arguments与实参的关系
JScript code

    function agtest(m,n)
            {
                var x=arguments;
                document.write(arguments);
                document.write("<br/>");
                x[1]=5;
                document.write(n+"<br/>");
                document.write(x[1]);
            }
            agtest();


如上代码,当函数调用省略实参时,实参的值为undefined,这个明白。但当给x[1](即arguments[1]亦即本例中的n)赋值后,输出的n的值依然是undefined,求解

------解决方案--------------------
arguments是实参组成的数组

------解决方案--------------------
arguments对象当然是可写的。。无法输出n是因为在调用函数时如果没有传递相应的实参,在函数体内根本就不会创建n这个变量,arguments[1]自然也不会指向变量n的引用,考虑一下下面的代码:
JScript code
function agtest(m, n) {
    arguments[0] = 2;
    arguments[1] = 'abc';
    alert(m);
    alert(n);
}
agtest(1);