JavaScript基本数组和函数问题

时间:2017-10-23 20:04:13

标签: javascript

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?

4 个答案:

答案 0 :(得分:6)

B变异的原因是当你分配时 var b = a,你没有复制数组。在javascript中,数组是对象,而保存对象数据的变量仅仅是对对象的引用。第a[1] = 4行会更改ab引用的对象。

对于第二个问题,您需要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);