0

This is the code

looks like the global user var is affected by function body

var user =  { name: 'Ivan' };

function setUser(user) {
    console.log("asdf", user);
    // user = { name: "asdf", a: 1 }
    user.name = 'Oleg';
    console.log("qwer", user)
}

setUser(user);

commented adding user = { name: "asdf", a: 1 } changes result

function setUser(user) {
    console.log("asdf", user);
    user = { name: "asdf", a: 1 }
    user.name = 'Oleg';
    console.log("qwer", user)
}

setUser(user);

console.log("1234", user, user.name);

this is the result ( chrome console )

Result

matar
  • 33
  • 6
  • `user.name = 'Oleg';` will mutate the argument if `user` is the argument, and leave the argument unmodified if you reassigned `user` to point to a different object before assigning to `.name` – CertainPerformance Jul 21 '22 at 01:21
  • Looks like `var user = { name: 'Ivan' };` and `argument user` are 2 different variables. It is little bit hard to grasp. But thank you. – matar Jul 21 '22 at 01:26

0 Answers0