//Here we see the reference updated
var myobj = {};
var pointer = myobj;
myobj.value = 1;
console.log(pointer.value);
//Here if we start as undefined, create a reference and then allocate a new object - not so much
var myobj = undefined;
var pointer = myobj;
myobj = {}
myobj.value = 1;
console.log(pointer.value);
在第二个示例中,情况略有不同。您定义myObj这是未定义类型。这意味着没有为此变量指定值。如果您有值类型变量,例如,您可以这样做您无法为其分配值的数字、字符串等;这也意味着myObj不指向内存堆部分中的任何内容。
然后当你执行此操作时 var point = myobj;您只需将一个变量的值复制到另一个变量;与这样做类似,例如:varpointer = 5;这称为“按值复制”,因此这就是不反映更改的原因。