JavaScript 参数在箭头函数中使用但未在局部范围内的任何地方声明 - Twilio 函数

JavaScript parameter used in arrow function but not declared anywhere in local scope - Twilio function

我正在处理一个预先存在的 Twilio 函数,并试图了解以下代码的工作原理。我已经测试了几次,只要我发送 'from' phone 号码任何消息,我都会收到 'body' 中描述的响应。但是,我试图了解 'msg' 和 'err' 参数如何存在,因为它们没有在函数的其他地方声明。有人可以帮我理解这些参数是如何有效的吗?我是 JavaScript 的新手,只了解回调和承诺的基础知识。

编辑:我开始更加理解这个想法。所以 'then' 和 'catch' 语句是在 create() 函数完成后发生的回调。感谢您帮助我理解的答案。

  exports.handler = function(context, event, callback) {
  context.getTwilioClient().messages.create({
    to: '+14806484732 ',
    from: '+12133151685',
    body: 'Remember the special today is Shrimp Scampi'
  }).then(msg => {
    callback(null, msg.sid);
  }).catch(err => callback(err));
}

err => callback(err) - 这是一个函数声明。单个参数 err,执行函数 callback

类似的情况
.then(msg => { // `msg` is a single parameter of declared function
  callback(null, msg.sid);
}

例子

const callback = argument => console.log(argument)
// this line is similar to
// const callback = (argument) => { console.log(argument) }
// also similar to
// function callback(argument) { console.log(argument) }

const func = err => callback(err)
// this line is similar to
// const func = (err) => { callback(err) }
// also similar to
// function func(err) { callback(err) }

func('test')

thencatch 中给出的函数是回调函数,它们都采用单个参数。根据功能文档,这些参数中的每一个都有特定的含义,您可以查阅。但是,如果您要自己编写回调,则可以随意调用它们。名称的选择只是为了尽可能清楚地传达语义。

因此,它们本质上只是匿名函数的参数。

我强烈建议研究 Javascript 中的回调,因为它们无处不在。