This question already has answers here:
JavaScript by reference vs. by value [duplicate]

(4个答案)


6年前关闭。




什么样的变量会像这样变化?
var int1;
var int2;
var int3;

int1 = 42;
int2 = int3 = int1;
int1 += 3;

int1      // 45
int2      // 42
int3      // 42



arr1 = {};
arr2 = arr3 = arr1;
arr1.ab = 5;

arr1      // Object {ab: 5}
arr2      // Object {ab: 5}
arr3      // Object {ab: 5}

就像int2和int3变了,而arr2和arr3没变一样?什么样的类型会这样改变?

最佳答案

如果您更改原始数据类型的引用,则原始数据类型(数字,字符串和 bool(boolean) 值)不会更改,而复合数据类型会更改。

http://msdn.microsoft.com/en-us/library/ie/7wkd9z69(v=vs.94).aspx

09-20 11:21