dum*_*000 5 javascript arrays function ecmascript-6
我试图了解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?
};
Run Code Online (Sandbox Code Playgroud)
我以为使用.apply()可以解决问题,但无法正常工作。例如...
animals.push.apply(animals, cows);
animals.push.apply(animals, chickens);
// Error: second argument to Function.prototype.apply must be an array
Run Code Online (Sandbox Code Playgroud)
由于...(rest / spread语法)会根据传递的参数创建一个新数组-因此,将数组设为["chickens", "cows"]会导致[["chickens", "cows"]]。通过删除...in 解决此问题foo。
var animals = [];
var chickens = 'chickens';
var cows = 'cows';
animals.push(cows);
animals.push(chickens);
console.log(animals);
function foo(animals) {
console.log(animals);
};
foo(animals);Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: auto; }Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |