1.函数参数的按值传递
1.1 基本类型,直接按值传递
1.2 引用类型(数组和对象), 也是按值传递,传递的是指针的值
function setName(obj){ obj.name = "xiaoxiaozi"; obj = new Object(); obj.name = "admin"; } var person = new Object(); setName(person); alert(person.name); // 结果是 xiaoxiaozi
调用函数setName时,将引用类型person保存的内存地址(栈)按值传递给setName的参数obj,这样obj和person指向堆中同一个变量;
修改obj.name属性时,即是修改了person指向的对象的属性;obj = {}相当于让obj指向了内存中新的位置,后续修改obj.name = 'admin'就与person指向的对象无关了