我们可以通过如下例子来理解:
1、参数绝对不可能是按引用传递的,绝对是按值来传递,都是复制了一份,引用也是,只不过引用的话他们指向的对象在堆内存中只有一个,而且是全局对象。
2、ECMAScript 中所有函数的参数都是按值传递的。也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。基本类型值的传递如同基本类型变量的复制一样,而引用类型值的传递,则如同引用类型变量的复制一样。
var person =new Object();person.name='LWH';function setName(obj){//这里面的obj是复制了一份外面的引用传过来的,因为方法只能传递值(基本类型的值和引用类型的值)obj.name='MHM';alert(obj.name);}setName(person);alert(person.name);//这里肯定变成了MHM,因为虽然引用是复制过去的,但是指向的外部堆是同样的。function setName2(obj){//这里面的obj是复制了一份外面的引用传过来的,因为方法只能传递值(基本类型的值和引用类型的值)//这里的话因为是复制进来的,所以这个对象已经不影响外部的person对象中的值了,并且这个对象在函数执行外后,会被立即销毁obj=new Object();obj.name="MHM";alert(obj.name);}var person2 =new Object();person2.name='LWH';setName2(person2);alert(person2.name);//这里还是会打印LWH
结语
仔细理解,其实蛮好理解的,只要考虑引用也是值即可,引用类型值的传递,则如同引用类型变量的复制一样。这个跟java有不同,java是可以传递引用的,他的引用并不会复制一份传进来。
		
        
 
 
 