我有一个简单的函数声明:
repeat = (n, action) => {
for(i=1; i<=n; ++i) {
action(i);
}
}
稍后在页面中调用 repeat 函数,但使用另一个函数作为“action”参数:
let test_array = [];
repeat(5, p => {
test_array.push(p);
})
此代码应将 1,2,3,4,5 存储到“test_array”数组中,但我不太清楚“p”在这种情况下究竟做了什么。
最佳答案
在您的代码片段中,p 或多或少是一个回调函数。回调是在另一个函数完成执行后要执行的函数。
在你的情况下,你正在创建另一个函数,它是你的 p 被使用的地方。
你可以通过记录你的 p var 来看到这一点。 p 是您代码中的一个函数(回调),因此您应该看到一个函数被输出。
repeat = (n, action) => {
console.log("Action: ", action);
for(i=1; i<=n; ++i) {
action(i);
}
}
let test_array = [];
repeat(5, p => {
test_array.push(p);
})
您的代码与具有相同:
repeat = (n, action) => {
for(i=1; i<=n; ++i) {
console.log(action);
action(i);
}
}
let test_array = [];
repeat(5, function(i) {
test_array.push(i);
})
console.log(test_array);
参见:https://developer.mozilla.org/en-US/docs/Glossary/Callback_function
关于javascript - 以另一个函数作为参数调用的函数,不能完全理解它的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54934924/