Следующий код производит (в консоли javascript Chrome)
a: (3) [1, 2, 3] b: (4) [1, 2, 3, 99] c: 4
Я ожидал, что c будет выглядеть как b. Почему нет?
function snafu(){
var a = [1,2,3];
var b = a.slice();
var c = a.slice().push(99);
b.push(99);
console.info("a:",a," b:",b," c:",c);
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Array.push() дает вам значение Array.length, а не сам массив
var a = [];
var b = a.push(8); /* returns length of array after pushing value into array */
console.info('a = ', a, ', b = ', b);Что ж, помните, что Array.slice() вернет вам новый массив. Таким образом, при нажатии на slice() он вернет вам длину массива.
function snafu(){
var a = [1,2,3];
var b = a.slice();
var c = a.slice();
c.push(99);
b.push(99);
console.info("a:",a," b:",b," c:",c);
}
snafu();
variable c предоставит вам новый массив, чтобы вы могли делать с c все, что захотите.
Вот и все. Легкий!!!!
вы можете заменить push на concat, и он должен работать