我有一个简单的函数声明:
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'的作用。
答案 0 :(得分:1)
在您的代码段中,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
答案 1 :(得分:0)
p
用作您提供给repeat()
的匿名函数的参数。 (查看MDN overview of functions in JavaScript)
您可以轻松地将非匿名(即命名)函数分配给对repeat
的调用,因为函数在JavaScript中是一流的
function foo(i) {
test_array.push(i);
}
repeat(5, foo); // => test_array now holds [1, 2, 3, 4, 5] just like before