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 相当于 创建一个局部对象,如果函数执行完毕,则局部对象销毁

posted @ 2018-05-30 19:52  Dear-LL  阅读(213)  评论(0编辑  收藏  举报