var a=[1,2,3];
var b = a;
a[1]=4;
alert(a);
alert(b);
我无法弄清楚为什么数组B也是[1,4,3]。
我的第二个问题是:如何完成函数sum(a)(b),因此它将返回a + b的值。例如,如果调用sum(2)(4)它将返回6?
答案 0 :(得分:6)
B变异的原因是当你分配时
var b = a
,你没有复制数组。在javascript中,数组是对象,而保存对象数据的变量仅仅是对对象的引用。第a[1] = 4
行会更改a
和b
引用的对象。
对于第二个问题,您需要sum
的咖喱版本。你可以简单地实现它
const sum = a => (b => a + b);
然后sum(a)
是函数b => a + b
。
答案 1 :(得分:0)
在JS var Arr1 = Arr1
中不复制它,它只是将对数组的引用放入另一个变量中。 (见@Adam Jaffe的回答)
如果您尝试拥有2个不同的阵列,克隆第一个阵列将其切割到起始位置。
var a=[1,2,3];
var b = a.slice(0);
a[1]=4;
console.log(a);
console.log(b);
答案 2 :(得分:0)
var a =[1,2,3];
var b = [];
b = a.concat(b);
a[1]=4;
alert(a);
alert(b);
function sum(a, b){
return a + b;
}
var r = sum(2, 4);
console.log(r);
答案 3 :(得分:-1)
function sum(a,b)
{
return a+b;
}
var a=[1,2,3];
var b = a.slice(0);
a[1]=4;
alert(a);
alert(b);
var c=sum(2,4);
alert("c=" + c);