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"的值赋给(全局!你忘了
在第一个示例中,"a"的值是数字10。在第二种情况下,它是对对象的引用。后
1 | b = a; |
在这两种情况下,变量"B"的值与"A"的值相同。
因为一个对特定对象的引用和另一个一样好,在第二个示例中,很自然地可以通过"a"或"b"中的引用来更改该对象的"name"属性的值。