首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >es6箭头功能说明

es6箭头功能说明
EN

Stack Overflow用户
提问于 2017-09-19 04:41:13
回答 1查看 40关注 0票数 1
代码语言:javascript
复制
{
  getter: {
    myThing: state => lookup => {
      return state.things[lookup];
    },
    myThings: state => {
      return state.things;
    }
  }
}

给定上述两个函数,下列函数是否等价?

代码语言:javascript
复制
{
  getter: {
    myThing: (state, lookup) => {
      return state.things[lookup];
    },
    myThings: (state) => {
      return state.things;
    }
  }
}
EN

回答 1

Stack Overflow用户

发布于 2017-09-19 04:48:23

(state) => {}state => {}是等效的,因为在箭头函数中的单个参数周围的圆括号是可选的。

state => lookup => {}(state, lookup) => {}而不是的等价物。

第一个表达式是一个接受一个参数的函数,并返回另一个也接受一个参数的函数,而第二个表达式是一个接受两个参数的函数。

例如a => b => {return a + b;}这样的表达式就是一种表示货币的方法。您可以像这样使用这两种变体:

代码语言:javascript
复制
const add = a => b => (a + b);
add(2)(3); // 5
add(2); // function add/<() // This refers to the `b => (a + b)` part
add(2, 3); // function add/<() // Like above, because the second argument is ignored

const add2 = (a, b) => (a + b);
add2(2)(3); // TypeError: add2(...) is not a function
add2(2); // NaN // b isn’t provided
add2(2, 3); // 5

(state) => (lookup) => {}将等同于第一个表达式。

注:(state) => (lookup) => {}需要显式return来返回值;省略大括号{}不需要。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46287879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档