Я пытаюсь понять документацию MDN по .push () и .apply () , потому что у меня возникла проблема, когда я оказался в массиве внутри массива в проекте. Я создал экспериментальный код, чтобы проиллюстрировать мою проблему.
Может кто-нибудь объяснить, почему содержимое массива внутри foo()
печатается внутри другого массива? Я не понимаю, почему он не печатает один массив для обоих экземпляров console.log()
.
var animals = [];
var chickens = 'chickens';
var cows = 'cows';
animals.push(cows);
animals.push(chickens);
console.log(animals); // > Array ["cows", "chickens"]
function foo(...animals) {
console.log(animals); // > Array [["cows", "chickens"]] <-- why is this one inside another array?
};
Я думал, что использование .apply()
решит проблему, но я не смог заставить ее работать. Например ...
animals.push.apply(animals, cows);
animals.push.apply(animals, chickens);
// Error: second argument to Function.prototype.apply must be an array