javascript - 当箭头函数只是返回它所采用的值时,为什么它会作为参数发送?

标签 javascript

我是 JavaScript 新手,我正在使用以下内容学习 React tutorial .

它还教授如何使用 Alt 作为状态管理库,我的问题与 connect 方法语法相关。我没有详细解释这个问题,因为我相信我的问题仅与理解语法有关。

我知道这里 connect 将逗号分隔的参数作为 props 传递给组件应用程序。然而我不明白第一个参数。

我遇到的箭头函数都在 => 之后使用 {},例如 () => {},其中参数将位于 () 中,函数主体将位于 {}

我对({lanes}) => ({lanes})的理解是,这是一个函数,它接受名为 Lanes 的对象数组并返回相同的数组。代码片段如下如下:

export default connect(({lanes}) => ({lanes}), {
    LaneActions
})(App)

我的问题是:

  1. 第一个参数确实是一个函数,我说得对吗?
  2. channel 是否包含在 {} 中以指定它是一个数组?如果不是,代表什么?
  3. 如果1.是正确的,为什么要传递一个按原样传递参数的函数。为什么不将 connect 写为 connect(lanes,LaneActions)(App)connect({lanes},LaneActions)(App)
    将车道封闭在 {} 中会产生影响吗?它是什么?
  4. 如果1.错误,请解释第一个参数的含义。

最佳答案

  1. 是的,这确实是一个箭头函数。
  2. 不,这不是 JS 中的“数组”(尽管如果您使用过 PHP,您可能会错误地这样调用它,因为 PHP 社区经常使用“(关联)数组”来表示这个概念)。用 JS 术语来说,这是一个“对象”,即一个键值数据结构(而在 JS 中,数组是按数字索引的)。具体来说,左侧是一个名为“解构参数”的新功能,它接受一个对象并将特定键提取到局部变量中。右侧有一个对象文字,根据本地数据创建一个新对象(注意,该值被省略,这是最近 JS 中可能出现的技巧)。
  3. 可能是因为 connect 需要一个回调作为第一个参数,如果您传递一个非函数,就会中断。另外,请注意,这不是普通的直通;它会在返回第一个参数之前删除除lanes 之外的所有键。
  4. 由于 (1) 是正确的,因此此处不需要答案。

5 和 6:这些有点宽泛。我建议提出一个新问题或检查 MDN's page on arrow functions如果你想了解所有需要知道的事情。为了回答这种特定情况:参数上的 () 是必需的,因为参数比单个标识符更复杂,参数中的 {} 用于解构,主体上的 () 是为了区分对象字面量和仅由单个语句 lanes 组成的 block ,而 {} 中主体创建一个对象文字。

如果您想知道(有些密集编码的)箭头函数到底是做什么的,顺便说一句,它的作用与以下大致相同(给出或采取一些当前不相关的箭头函数的怪癖):

function(obj) {
    return { lanes: obj.lanes };
}

关于javascript - 当箭头函数只是返回它所采用的值时,为什么它会作为参数发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47287588/

相关文章:

javascript - Service Worker - 为什么要延长事件的生命周期?

javascript - 如何在 HERE Map API 上获取方向多段线而不是实线

javascript - Node.js 使用冰棒 promise 异步

javascript - JSON.stringify 使对象数组为空

javascript - 使弹出窗口按照当前日期显示

javascript - 如何创建一个可以通过按钮添加和删除输入的列表?

javascript - 如何将 ASP.NET 用户和路由数据传递给 JavaScript?

javascript - 这段 Javascript 代码在幕后发生了什么?

Javascript SVG 查看器库

javascript - 在另一个 <select> 框中选择时禁用 <select> 选项