我有两个对象,一个函数和一些console.logs:
let obj1 = {
value: "a"
}
let obj2 = {
value: "b"
}
console.log(obj1.value)
console.log(obj2.value)
function change(obj1, obj2) {
obj1 = obj2;
obj2.value = "c";
console.log(obj1.value)
console.log(obj2.value)
}
change(obj1, obj2);
console.log(obj1.value)
console.log(obj2.value)
结果:
a b c c a c
而且我期望:
a b c c c c
有人可以解释为什么值是A而不是C吗?
/* function scope obj1 and obj2, refer like function(f_obj1, f_obj2)
f_obj1 is reference to global obj1
f_obj2 is reference to global obj2 */
function change(obj1, obj2) {
/* f_obj1 = reference of f_obj2 */
obj1 = obj2;
/* f_obj2 is referring global obj2 and value updated in global */
obj2.value = "c";
/* printing the f_obj1 and f_obj2 values */
console.log(obj1.value)
console.log(obj2.value)
}
// Now out of the function, So f_obj1 and f_obj2 are out of scope.