JavaScript -- 函数传参深入理解
ECMAScript 规定:所有函数都是按指传递。
引用类型:Object。
1. 复制变量
var obj1 = new Object();
obj1.num = 5;
var obj2 = obj1;
obj2.num = 10;
console.log(obj1.num + ' | ' + obj2.num); // 10 | 10
结论:在javascript 中,引用类型复制,只是复制的是指向对象的指针。而指向的都是同一对象的值( 即堆内存中的某个object )
2. 传递参数( 来自JS 高级 )
function setName(obj) {
obj.name = "koko";
obj = new Object();
obj.name = "jimi";
}
var person = new Object();
setName(person);
alert(person.name); // "koko"
结论:如果是按引用传递( 即指针 ), 函数中,新对象赋值给变量obj,此时引用( 指针 )改变,结果应该为:jimi。但此时结果依然为 koko,所以原始的引用( 指针 )依然未变。而且:在函数中,重写 obj 相当于 创建一个局部对象,如果函数执行完毕,则局部对象销毁。