javascript - 传递给 JavaScript 函数的参数数量是否需要与函数中定义的数量相同

标签 javascript node.js parameters stripe-payments

我可以使用一些 javascript 函数帮助。

下面的代码是使用 node.js 的 stripe 的示例,基本上是将代码发布回 stripe 以获取一些用户详细信息。

app.get('/oauth/callback', function(req, res) {

  var code = req.query.code;

  // Make /oauth/token endpoint POST request
  request.post({
    url: TOKEN_URI,
    form: {
      grant_type: 'authorization_code',
      client_id: CLIENT_ID,
      code: code,
      client_secret: API_KEY
    }
  }
});

我需要设置一个类似的函数,但主要区别是我已经有了该代码并且希望将代码传递到该函数中。

目前我的函数如下所示:

var getAccountDetails = function(req, res) {

  // Make /oauth/token endpoint POST request
  request.post({
    url: 'https://connect.stripe.com/oauth/token';,
    form: {
      grant_type: 'authorization_code',
      client_id: 'ca_XXXXXXXXXXXXXXXXXXXXXXXXX',
      code: code,
      client_secret: API_KEY
    }
  }, function(err, r, body) {


  });
};

我正在从另一个函数中调用 getAccountDetails(),但想传递给 getAccountDetails(code),但我仍然在 javascript 函数方面遇到了一些困难。

**************** 更新****************

在谷歌云功能控制台上,我不断收到超时消息。如果有人发现代码有任何明显错误,请告诉我。

function getAccountDetails(code)
{
   console.log(code)
 return  function(req, res) {

  // Make /oauth/token endpoint POST request
  request.post({
    url: 'https://connect.stripe.com/oauth/token',
    form: {
      grant_type: 'authorization_code',
      client_id: 'xxxxxxxxx',
      code: code,
      client_secret: 'xxxxxxxxxxxx'
    }
  }, function(err, r, body) {

   // var accessToken = JSON.parse(body).access_token;

    console.log(body);
  });
}
}

exports.authCode = functions.https.onRequest((req, res) => {
  console.log(req)

  var code = req.query.code;

  console.log(code);

  getAccountDetails(code)

});

谢谢。

最佳答案

对你的标题问题的简短回答是否定的。 JavaScript 对于函数定义中的参数数量是否与调用函数时传入的参数数量相匹配非常灵活。

处理不同数量的参数是这样处理的:

  • 如果调用函数时使用的参数少于定义中的参数,则未包含的参数将在函数执行中未定义
  • 如果调用函数时使用的参数多于定义中的参数,多余的参数不会导致任何问题

事实上,在第二种情况下,您仍然可以使用 arguments 关键字访问传入的额外参数:

function example(p1, p2) {
    console.log(arguments[2]);
}

example('one', 'two', 'three'); // logs: 'three'
<小时/>

但是,您正在使用的函数看起来可能是框架的一部分。如何使用它取决于什么框架以及它在该框架中的位置。

您可以修改函数定义:

var getAccountDetails = function(req, res, code) {
    // ...

只要框架没有其他部分调用该函数,可能期望第三个参数中存在其他内容(例如,许多基于 Express 的应用程序可能期望第三个参数是回调函数,通常标记为 next 等),这就很好。

作为最好的猜测,如果您创建此函数作为帮助程序或为自己提供服务,那么我会说根据需要修改它并进行实验。但是,如果它位于框架的高度结构化部分,则修改它可能会破坏某些内容。

关于javascript - 传递给 JavaScript 函数的参数数量是否需要与函数中定义的数量相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46453590/

相关文章:

javascript - 在小部件中使用 mootools 库时的兼容性?

javascript - 传单标记点击显示数据在div中

javascript - javascript中的回溯,无法更新全局变量

jquery - jquery 自动完成中的动态参数

node.js - 如何修改 Sequelize 查询以在行创建时不发送 ID?

batch-file - 使用参数包含等号的批处理文件覆盖 .INI 文件

javascript - 数据更改时发出警报 - JSON、AJAX 和 jQuery

javascript - if 条件检查两个选择器是否悬停,如果悬停,则文本行下划线

javascript - 使用 Node.js 创建 HTTPS 服务器

javascript - 为什么看起来像是来自 Electron 中一个菜单项的 IPC 消息到达我的窗口,但从另一个菜单项发送时却没有?