不能使用forEach和map将参数传递给函数数组

时间:2017-11-19 22:22:37

标签: javascript arrays foreach

我有一系列功能。然后我使用forEach循环将参数传递给这些函数。虽然当我尝试调用第一个函数时,我在控制台中得到了未定义而不是'嘿'

然后我尝试用旧的数组制作一个新的数组。并尝试使用map来获取函数数组,并将参数传递给每个函数,但我得到一个包含三个未定义项的数组,所以我甚至无法调用函数。

const arr = [(arg) => {console.log(arg)}, (arg) => {}, (arg) => {} ];
    arr.forEach(func => func('hey'));
    arr[0]();

    const arr2 = arr.map(func => func('ho'));
    console.log(arr2);
    arr2[0]();

两种情况都有什么问题?

1 个答案:

答案 0 :(得分:1)

第一种情况没有问题,但arr[0]();只打印undefined,因为您没有通过任何争论。

在第二种情况下,结果数组包含每个函数调用的结果,每个函数返回undefined,因此arr2中没有函数可以调用。

您的代码段在HTML部分中有JS,所以它根本没有运行。



const arr = [(arg) => { console.log(arg) }, (arg) => {}, (arg) => {}];
arr.forEach(func => func('hey'));
arr[0](); // <-- You're passing no argument here

// This invokes the functions, and builds an array of the functions'
// return values, all of which are `undefined`.
const arr2 = arr.map(func => func('ho'));
console.log(arr2);
arr2[0]();
&#13;
&#13;
&#13;