var a=[1,2,3];
var b = a;
a[1]=4;
alert(a);
alert(b);
Я не могу понять, почему массив B равен [1,4,3].
Мой второй вопрос: как я могу выполнить функцию sum (a) (b), поэтому она вернет значение a + b. Например, если сумма вызова (2) (4) вернет 6?
Причина, по которой B также мутирует, заключается в том, что когда вы назначаете var b = a
, вы не копируете массив. В javascript массивы - это объекты и переменные, которые содержат данные объекта, являются просто ссылками на объект. Строка a[1] = 4
изменяет объект, a
ссылаются как a
и b
.
По второму вопросу вы хотите получить sum
в карри. Вы можете реализовать его просто как const sum = a => (b => a + b);
Тогда sum(a)
есть функция b => a + b
.
В 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);
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);
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);
sum(a)(b)
а неsum(a,b)
.