js题目一
题:
function setPetName(obj){
obj.name = "name"
obj = new Object()
obj.name = "name2"
}
let dog = new Object()
setPetName(dog)
console.log(dog.name)
以上代码最后会打印输入什么?
结果
结果回输出name
分析
最开始我以为是undefined,我忽略了对象是复杂数据类型,是根据内存地址作储存的,结果运行结果是name;
开始dog被赋值{},假如此时dog分配的地址为a1,然后dog作为参数被传入setPetName,参数obj也被指向a1,然后通过obj向对象添加name属性,所以此a1储存的value为{name:“name”},dog和obj都指向a1;
接下来obj被重新分了一个内存地址a2,储存的{},然后添加name属性;
此时:
dog 指向a1 {name:“name”}
obj 指向a2 {name : “name2”}
所以此时打印输出a1的name的结果为name