JavaScript中函数参数的传递:
- 如果传递的是基本类型变量,仅仅复制一份值给此参数,函数内部的变动不会影响该外部变量
- 如果传递的是引用类型变量,也是复制一份对象的引用给此参数,函数内部对该引用指向的对象的修改会影响外部变量
这两种参数传递均是按值传递。
下面仅验证第二种情况:
1 function setName(obj){ 2 obj.name= "Lily"; 3 } 4 5 var person = new Person(); 6 setName(person); 7 8 alert(person.name); //Lily 9 10 11 /* 12 * 函数内部为对象添加了name属性并赋值Lily 13 * 外部对象访问name属性,值为Lily 14 */
1 function setName(obj){ 2 obj.name= "Lily"; 3 obj = new Person(); 4 obj.name="Lucy"; 5 } 6 7 8 var person = new Person(); 9 setName(person); 10 alert(person.name);//Lily 11 12 13 /* 14 *函数内部虽然为obj重新设置了引用并对新对象进行了操作,但是并没有影响原来的对象实例 15 *说明传递给obj的值是一个复制的地址(引用),而非引用 16 */
时间: 2024-10-11 09:56:13