当前位置: 首页 > 面试题库 >

javascript回调函数中的参数从何而来?

师冥夜
2023-03-14
问题内容

我了解回调函数的本质,因为该函数在作为参数传递给另一个函数后会再次执行。但是,我对回调函数内部的变量来自何处感到困惑,如以下node.js示例所示:

router.get('/', function(req, res){
    res.render('index', {});
});

变量req和res如何填充?我们将不胜感激一个示例,该示例解释了如何仅调用res.render(…)而无需自己声明res。


问题答案:

它们来自在调用时调用普通非回调函数时来自的位置。

如果您有此功能,

function add (a, b) {
  return a + b
}

您知道在调用add时a和b来自于,

add(1,2)

这与回调的原理相同,不要仅仅因为稍后会调用它而让您的大脑陷入混乱。

在某个时候,您传递给router.get的函数将被调用,当它执行时,它将接收reqres

让我们假装router.get的定义如下

router.get = function(endpoint, cb){
   //do something
   var request = {}
   var response = {}
   cb(request, response) // invocation time
}

以您的示例为例,只要.get调用,就由节点来传递函数请求和响应。



 类似资料:
  • 问题内容: 我正在尝试将一些参数传递给用作回调的函数,该怎么做? 问题答案: 如果您想要更一般的东西,可以使用arguments变量,如下所示: 但是否则,您的示例可以正常工作(可以在测试器中使用arguments [0]代替回调)

  • 我需要使用thymeleaf从html调用一个javascript函数。在这个特定的例子中,我有一个student对象,我需要将这个student对象传递给javascript函数(edit())以便在单击按钮时进行处理。 重要代码段:

  • 问题内容: 在SO中多次问过这个问题。但是我还是收不到东西。 我想从回调中获得一些价值。请看下面的脚本进行澄清。 如果我尝试返回该值,则只是“未定义”。我遵循了SO的一些想法,但仍然失败。 那些是: 问题答案: 这是不可能的,因为您无法从同步方法内部的异步调用返回。 在这种情况下,您需要将回调传递给foo,该回调将接收返回值 问题是,如果内部函数调用是异步的,则所有“包装”此调用的函数也必须是异步

  • 问题内容: 我有一个函数,将回调函数作为参数,并用一个参数调用它。 我还有一个带有两个参数的函数:和。 我想将函数作为参数传递给,但我也想作为第二个参数()传递给。我怎样才能做到这一点? 问题答案: 只需创建一个包装回调: 或使用ECMAScript 6箭头功能:

  • 问题内容: 我需要在Node.JS应用程序中观察少量目录: 问题在于fs.watch仅将文件名传递给回调函数,而没有包括它所在的目录。我是否可以通过某种方式将额外的参数传递给updated()函数,以便它知道文件在哪里? 我认为我正在寻找类似于Python的工具,如果有帮助的话。 问题答案: 您可以使用:

  • 本文向大家介绍详解JavaScript的回调函数,包括了详解JavaScript的回调函数的使用技巧和注意事项,需要的朋友参考一下 本文的目录: 什么是回调或高级函数 回调函数是如何实现的 实现回调函数的基本原则 回调地狱的问题和解决方案 实现自己的回调函数 在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String、Array、Number、Obj