【发布时间】:2015-08-13 04:00:41
【问题描述】:
将数组分配给另一个变量时,传递的是引用而不是值。当您使用 == 运算符比较两个数组并返回 true
var a = [[1,2],[3,4],[5,6]];
var b = a; // b = [[1,2],[3,4],[5,6]]
var c = [].concat(a); // c = [[1,2],[3,4],[5,6]]
a == b; //true
a == c; //false
使用上述输入,当我修改数组b 时,它会改变数组a,而不是c。
b.push([7,8]); // b = [[1,2],[3,4],[5,6], [7,8]]
a; //a = [[1,2],[3,4],[5,6], [7,8]]
c; //c = [[1,2],[3,4],[5,6]]
但是当我执行以下操作时,它会发生变异 c。
b[0].push(5); // b = [[1,2,5],[3,4],[5,6], [7,8]]
a; //a = [[1,2,5],[3,4],[5,6], [7,8]]
c; //c = [[1,2,5],[3,4],[5,6]]
为什么会这样?这种行为发生在使用改变数组的数组方法时。
【问题讨论】:
标签: javascript