Javascript var引用, 有人可以向我解释原始和objs /数组之间的区别是什么?

Javascript var reference. Could someone explains to me what's the difference between primitive and objs/array?

本问题已经有最佳答案,请猛点这里访问。

我想知道为什么这个差异(我想像Java一样,所以它是堆栈和堆差)

1
2
3
4
5
6
7
8
9
var a = 10;
console.log(a);//10
function ChangeVal(){ b=a; b++; }
console.log(a);//10

var a = {name:"MyName"};
console.log(a);//{name:"MyName"}
function ChangeVal(){ b=a; b.name ="YourName"; }
console.log(a);//{name:"YourName"}


将一个变量的值赋给另一个变量总是需要复制该值。因此:

1
b = a;

将变量"a"的值赋给(全局!你忘了var)变量"B"。这在两个例子中都会发生。

在第一个示例中,"a"的值是数字10。在第二种情况下,它是对对象的引用。后

1
b = a;

在这两种情况下,变量"B"的值与"A"的值相同。

因为一个对特定对象的引用和另一个一样好,在第二个示例中,很自然地可以通过"a"或"b"中的引用来更改该对象的"name"属性的值。