关于昨天老师布置的课后作业题目如下:
function change(o){
o.name="西西";
o={};
o.name="小红";
}
var o={ name: "小静", age: 11 }
change(o);
console.log(o)//?
首先:我们先找出一个题目内 全局变量 var o={ name: "小静", age: 11 } 及函数内的局部变量 o.name="西西";
函数function 调用全局变量o,将全局变量o的地址(假设是0×2204)传参给(赋值)function函数内的局部变量o,
那么 function函数内的局部变量o将原地址中全局变量的name改为了
程序继续往下执行
o={},代表创建了一个新的对象,开辟了一个新地址,与原地址脱离了关系
就等于给新局部变量o的name属性赋值了 “小红” 这个值
当程序执行完毕之后,局部变量会自动释放内存地址,
最后,整个函数就只剩下了
所以最后结果输出的是: