javascript函数为什么要传递参数
的有关信息介绍如下:一般使用return 传递所需使用参数但需传递的参数多于一个时,则要使用Object进行传递 例:(例子是转来的,个人觉得是很清晰且详细的~~~) function setName(obj){ obj.name = "xiaoxiaozi";}var person = new Object();setName(person);alert(person.name); // 返回 xiaoxiaozi在向参数传递引用类型值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部。ECMAScript 中,所有函数的参数都是按值来传递的。基本类型值的传递和基本类型变量复制一致(采用在栈内新建值),引用类型值的传递和引用类型变量的复制一致(栈内存放的是指针,指向堆中同一对象)因此在调用函数setName()时,person 被复制给了 obj ,因此在函数内部 obj 与 person 引用的是同一个对象,或者说是对同一个对象的引用。所以在给 obj 引用对象加上 name 属性时,person 引用的对象也有了 name 属性,因为虽然 obj 与 person 不同,但是二者引用的对象是同一个。但是,千万不要认为,在局部作用域中修改的对象会在全局作用域中反映出来就说参数是按引用传递的。为了证明是值传递,让我们再来看如下例子:function setName(obj){ obj.name = "xiaoxiaozi"; obj = new Object(); obj.name = "admin";}var person = new Object();setName(person);alert(person.name); // 结果依旧是 xiaoxiaozi在调用 setName() 函数初时,obj 与 person 引用的是同一对象,所以首次的 name 属性赋值会对 person 有所影响。但是当 obj 被重新定义时,其引用的对象已经与 person 不同,所以后面设置的 name 属性,不会对 person 引用的对象有任何影响。感觉上面的这个例子非常好,大家可以仔细体会一下。