gpt4 book ai didi

javascript - 为什么我不将任何参数传递给 map 中的函数?

转载 作者:搜寻专家 更新时间:2023-11-01 04:44:19 25 4
gpt4 key购买 nike

为什么我们不必将参数传递给 function b在下面的代码中?难道只是因为我们用的是Array类型的map方法?或者我们可以在其他任何地方使用这样的函数JavaScript?

谁能给出一个非常清晰透彻的解释?

代码:

/* we have an array a*/
const a = ['a', 'b', 'c'];
/*we define a function called b to process a single element*/
const b = function(x){do something here};
/*I noticed that if we want to use function b to take care with the
elements in array a. we just need to do the following.*/
a.map(b);

最佳答案

函数是 Javascript 中的一等公民,这只是它们可以作为变量和参数传递的一种奇特的说法。

打电话时你在做什么

a.map(b);

本质上是调用

[
b('a'),
b('b'),
b('c')
]

数组函数map只需使用数组中的每个参数调用给定函数(在您的情况下为 b),并将输出放入一个新数组中。所以有参数被传递给 b,只是 map 在幕后为你做这件事。

至于您的其他问题,在很多情况下您会将函数作为参数传递而不先调用它。另一个常用函数是 Array 对象的 reduce .

const out = a.reduce(function (accumulator, val) {
return accumulator + ' - ' + val;
}
// out: 'a - b - c'

还有很多函数采用回调,当某种异步任务完成时调用。例如。 setTimeout,将在耗时后调用给定的函数。

setTimeout(function (){
console.log("Hello World!");
}, 1000
);
// Will print "Hello World!" to console after waiting 1 second (1000 milliseconds).

而且您也可以轻松编写您的函数以将另一个函数作为参数!只需像调用任何其他函数一样调用您传入的函数。

// A really basic example
// More or less the same as [0, 1, 2].map(...)
function callThreeTimes(f) {
return [
f(0),
f(1),
f(2)
]
}

// My function here returns the square of a given value
function square(val) { return val * val }

const out = callThreeTimes(square);
// out: [0, 1, 4]

关于javascript - 为什么我不将任何参数传递给 map 中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49104825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com