javascript - 以另一个函数作为参数调用的函数,不能完全理解它的概念

标签 javascript function parameters

我有一个简单的函数声明:

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/

相关文章:

javascript - Angular 模态不随组件变量变化而更新

C++ 结构函数体调用另一个结构函数,同一个模块

c# - 如何从 C# 中将 MySQL 数据库函数作为查询参数传递

c# - PostMessage 无法传递字符串 C#

c# - 从 C# 将参数传递给 powershell

javascript - react native : How to get <TextInput/> to start from right to left?

javascript - 尝试在 iframe 中打开 URL

javascript - PHP基于正则表达式显示弹出消息

function - 两个日期之间的月份函数

javascript - 设计接受字符串或函数的 JavaScript 函数