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,求解

解决方案 »

  1.   

    楼主啊,arguments是readonly的,你怎么可以给他赋值呢,罪过啊!
      

  2.   

    arguments貌似只读,不可写的吧……
      

  3.   

    因为你没有实参啊function kk(){
        alert(arguments[0])
        alert(arguments[1])
    }
        kk(1,"see");
      

  4.   

    argumens这个为只读 就算写进去也不会改变的
      

  5.   

    arguments是实参组成的数组
      

  6.   

    arguments不是一个数组
    说arguments是只读的自己传两个参数进去试一下
      

  7.   

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

  8.   

    也就是说先有实参,之后arguments[0]...argument[i]...这些才会与实参绑定的,结贴。
      

  9.   


    请问我们有理由这样做吗?arguments的作用就是获取传递到函数的实际的参数的,我们对arguments进行重新赋值,是不是违反了arguments对象的初衷.看你的等级挺高的,如果回答问题的时候能深入解释下就更好了.像这种情况我觉得不推荐这样做.