(重复?)当将对象传递给 JavaScript 中的函数时

(duplicate?) When pass an object to function in JavaScript

 var obj = { hi : 'hello' };

 function myFunction( arg ) {
    console.log( arg.hi );
 }

 myFunction( obj );

如果我调用 myFunction,javascript 引擎会通过 obj 作为参考吗?还是复制?
还有,我怎么才能看到?

如果它是一个对象 - 它将它作为引用传递(指向特定对象的地址)。这将是同一个对象。在函数内应用的任何更改都会影响对象。

要制作副本,您可以使用 Object.assign

对象通过引用而不是值传递。 所以你必须小心改变函数内的对象。

你可以在这里看到我的代码片段。

var o = {
  'msg': 'Say Hi!'
  };

function myFun(arg) {
  console.log(arg.msg);
  // This should not be accessible
  // from global scope if is a copy
  arg.msg = 'Bye';
}

myFun(o);

// Check what appened
console.log(o.msg);

// It is passed by reference.