首页 新闻 赞助 找找看

javascript arguments问题

0
悬赏园豆:5 [已解决问题] 解决于 2012-09-23 16:50
    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应该是存的变量名吧??忘了,怎么回事儿??求解?或者推荐文章!谢谢!

unbreakable的主页 unbreakable | 初学一级 | 园豆:111
提问于:2012-07-11 06:34
< >
分享
最佳答案
0
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 和参数名之间的关系 的原理我也不清楚,再看看。
收获园豆:5
acjialiren | 初学一级 |园豆:191 | 2012-08-06 00:45
acjialiren | 园豆:191 (初学一级) | 2012-08-06 14:33
其他回答(3)
0

可以看看这个:javascript arguments(转)

artwl | 园豆:16736 (专家六级) | 2012-07-11 07:05
0

argumenst是当前方法的参数集合。

每一个函数内部都会自动创建一个argumenst,

存放当前这个函数的调用参数。

js中的函数参数在声明时,不是必须的。

中文代码 | 园豆:951 (小虾三级) | 2012-07-11 08:27

明白了!但是我想arguments访问的是作用域内部的变量集吧!不然也不会对形参覆盖,arguments对实参的访问之也会改变的吧!

支持(0) 反对(0) unbreakable | 园豆:111 (初学一级) | 2012-07-11 17:39
0

arguments获取的是传过来参数的值

code先生-null | 园豆:307 (菜鸟二级) | 2012-07-12 16:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册