是一个存储为javascript内存参考的变量?

Viv*_*osh 4 javascript

我已经读过变量存储为js中的内存引用.

因此var a = 5,具有值的存储器位置5被分配给a.

我尝试在node.js上运行它:

var a = 5;
var b = {
  val: a
};
a = 6;
Run Code Online (Sandbox Code Playgroud)

我希望b.val6,但是5,

如果我跑:

var a = 5;
var b = {
  val: a
};
var c = {
  value: b
}
b.val = 6;
Run Code Online (Sandbox Code Playgroud)

c.value.val6.

如果它们都是内存对象,为什么输出会有差异?

Raj*_*amy 8

在javascript中,当您分配object给另一个时variable,memory reference它将被共享.它不会创建副本.与此同时,primitive values将采取与此完全相反的行动.它会在分配给另一个副本时创建一个副本variable.

你还要注意这种奇怪的情况,

var x = { a: 10 };
var y = x;
x = 5;
Run Code Online (Sandbox Code Playgroud)

初看起来,在听到关于对象的基本解释之后,每个人(新学习者)会告诉他们,y将包含5.但这是错误的.y将具有较旧的值,即{a:10}.因为在此上下文中,x将删除旧的引用,并为新的内存位置分配新值.但是Y会保留其给出的参考x.