为什么当箭头函数只返回它所需的值时,它会作为参数发送?

时间:2017-11-14 13:53:21

标签: javascript

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

它还教导使用Alt作为状态管理库,我的问题与$current = URL::action(Route::currentRouteName(), ['arg' => 'value']); // Returns the current url and assign arguments to it 方法语法有关。我没有详细解释这个问题,因为我认为我的问题只与理解语法有关。

我知道这里connect将逗号分隔的参数作为道具传递给组件App。但是我不明白第一个参数。

我遇到的箭头函数connect{}使用=>() => {},参数将在()中,函数体将在{ {1}}

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

({lanes}) => ({lanes})

我的问题是:

  1. 我是对的,第一个参数确实是一个函数吗?
  2. export default connect(({lanes}) => ({lanes}), { LaneActions })(App) 中的通道,指定它是一个数组?如果不是,它代表什么?
  3. 如果1.是正确的,为什么要传递一个按原样传递参数的函数。为什么不将连接写为{}connect(lanes,LaneActions)(App)
    围绕connect({lanes},LaneActions)(App)的车道是否有所作为,它是什么?
  4. 如果1.错误,请解释第一个参数的含义。

1 个答案:

答案 0 :(得分:3)

  1. 是的,这确实是一个箭头功能。
  2. 不,那是"数组"在JS中(尽管如果你使用过PHP,你可能会错误地称之为,因为PHP社区经常使用"(关联)数组"这个概念)。这是" 对象"在JS术语中,即键值数据结构(而在JS中,数组是数字索引的)。具体来说,左侧是一个名为" 解构参数"的新功能,它接受一个对象并将特定键拉出到局部变量中。在右侧,有一个对象文字,根据本地数据创建一个新对象(请注意,该值被省略,这是最近JS中可能的技巧)。
  3. 大概是因为connect期望回调作为第一个参数,并且如果你传递了非函数则会中断。另外,请注意,这不是简单的直通;它会在返回之前从第一个参数中删除除lanes之外的所有键。
  4. 由于(1)是对的,因此无需回答。
  5. 5& 6:这些有点宽泛。如果您想了解所有相关信息,我建议您提出新问题或查看MDN's page on arrow functions。要回答这个特定情况:需要参数(),因为参数比单个标识符更复杂,参数中的{}用于解构,()在body用于区分对象文字和仅由单个语句lanes组成的块,并且正文中的{}创建对象文字。

    如果您想知道箭头函数究竟是什么(稍微密集编码),顺便说一句,它与下面的内容大致相同(给出或采取一些当前无关的箭头函数的怪癖) :

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