变量引用更改
这个问题在这里已经有了答案:
原始数据类型(数字,字符串和布尔)不改变,如果你改变它的引用,而复合数据类型确实改变。
http://msdn.microsoft.com/en-us/library/ie/7wkd9z69(v=vs.94).aspx
在JavaScript中, Arrays & Objects
通过引用传递,所以将它们更改为一个地方会影响其他人。
像number
, string
这样的原始number
是通过值传递的,所以在一个地方改变它们不会影响到其他地方。
基元
var a,b;
a=10;
b=a;
所以b
& a
就像波纹管结构一样
a ---1000----> [10] a is pointing to some location(lets 1000) which have value 10
b ---1004----> [10] b is pointing to some location(lets 1004) which have value 10
让我们增加a
由1
现在的价值将在地方改变1000
。
a ---1000----> [11]
b ---1004----> [10]
在数组和对象中
obj1 = {}; // obj1 has a reference
obj1
的结构像波纹管
------->1000--------->[{}]
obj1 -------1004----->[1000] //this '1000' is a reference which has a `{}` at it's place
这条线
obj2 = obj1;
在这行之后obj2
& obj
共享同一个引用-------> 1000 ---------> [{}] obj1 ------- 1004 -----> [1000] obj2 ------- 1008 -----> [1000]
obj1.ab = 5;
这一行将添加一个名为ab
的字段到obj1
的引用
------->1000--------->[{ab:5}]
obj1 -------1004----->[1000]
obj2 -------1008----->[1000]
而且因为obj1
& obj2
具有相同的参考,所以你得到了两个字段ab
。
obj1 // Object {ab: 5}
obj2 // Object {ab: 5}
注意: -赞赏任何改进。
arr1包含空列表的引用。 然后arr3接收相同列表的引用,arr2是同一列表的引用。 所以当你制作arr1.ab = 5时,你在列表中添加了一个名为'ab'的项目并给出了值5.但是由于arr2和arr3指向同一个列表,你将得到相同的值。
链接地址: http://www.djcxy.com/p/20983.html