function test(one,two){ alert("one :"+arguments[0]+" two :"+arguments[1]); //one : a two:b var one="haha"; var two="bbbb"; alert("one :"+arguments[0]+" two :"+arguments[1]); // one:haha two: bbbb } test("a","b");
argumenst应该是存的变量名吧??忘了,怎么回事儿??求解?或者推荐文章!谢谢!
var a = 0;
function test2() {
alert(a); //undefined a=10;
alert(a); //10
var a= 11;
alert(a) //11
}
test2();
这是一个作用域链的问题,不知道你能看明白不。
在test2的作用域链里只有一个a的,虽然定义在后面的,执行时始终都是那个a,而不是全局变量中的a
在来说你的问题
同样的,参数里的 one,two 和 函数中的 one,two 都是处于一个作用域链,因此他们在执行的时候其实都是一回事,
argument 返回的也只有对应的一个 one 和 two ,因为执行的时候只有一个one 一个two
至于 argument 和参数名之间的关系 的原理我也不清楚,再看看。
argumenst是当前方法的参数集合。
每一个函数内部都会自动创建一个argumenst,
存放当前这个函数的调用参数。
js中的函数参数在声明时,不是必须的。
明白了!但是我想arguments访问的是作用域内部的变量集吧!不然也不会对形参覆盖,arguments对实参的访问之也会改变的吧!
arguments获取的是传过来参数的值