执行以下程序,输出结果为()
function fn(o,val){
o.b = 1;
val = 1;
}
var obj = {b:0};
var num = 0;
fn(obj,num);
console.log(obj,num);
function fn(o,val){ o.b = 1; //修改o指向的对象{b:0}中的属性b的值,对象变为{b:1} val = 1; //修改局部变量val的值为1,不会影响全局变量num的值 } var obj = {b:0}; //引用类型的变量obj指向对象{b:0} var num = 0; fn(obj,num); //将obj的引用地址复制给fn函数的形参o,此时obj和o指向同一个对象{b:0};将num的值复制一份赋值给val console.log(obj,num); //打印全局变量obj指向的对象,此时被修改为{b:1};打印全局变量num值,还是0
function fn(o,val){ //函数传参 形参o为引用数据类型 val为基本数据类型
o.b = 1; // 此处的o和函数外的obj共用一个内存地址(相互影响),修改o(指针改变,但内存地址没变),函数外面的 obj也会改变
val = 1; // val为基本数据类型 在函数内修改值不会影响函数外面的基本数据类型(互不影响)
}
var obj = {b:0};
var num = 0;
fn(obj,num);
console.log(obj,num); //传实参