我之前读过,更改变量值的唯一方法是使用赋值运算符(=
,+=
,..)
但是在mdn的此示例中, nums
变量通过更改分配中使用的其中一个数组而不使用赋值运算符来返回两个不同的值。
var num1 = [[1]];
var num2 = [2, [3]];
var nums = num1.concat(num2);
console.log(nums);
num1[0].push(4);
console.log(nums);

但是,当我删除嵌套数组并直接将4
推送到num2
数组时,打印值不会发生变化。
请检查此example
答案 0 :(得分:2)
concat
函数返回一个新数组,由两个数组的元素组成。
在第一种情况下,num1
数组和nums
包含对同一内部数组的引用,因此当您更改它时,它会反映在两者中。
在第二种情况下,数组包含数字,并且数组之间没有共享。这就是为什么当你推到一个时,另一个不会改变。
至于分配混淆,nums
始终指向同一个数组,直到为nums分配新值。这并不意味着你无法改变数组本身的内容。