当前位置: 首页 > 知识库问答 >
问题:

ES6胖箭头和圆括号(...)=>({...})'[重复]

宦翔飞
2023-03-14

我一直在研究一些Graph QL/React/Relay示例,遇到了一些奇怪的语法。

在图形QL对象中定义字段时,使用以下语法:

const xType = new GraphQLObjectType({
  name: 'X',
  description: 'A made up type for example.',
  fields: () => ({
    field: {/*etc.*/}
  })
});

据我所知,这只是定义一个匿名函数,并将其分配给xType.fields.该匿名函数返回包含字段定义的对象。

然而,我假设图形QL模式机制是工作的,这必须被定义为返回对象的函数,而不仅仅是返回对象。但是让我困惑的部分是花括号周围的括号。

这是为了区分对象定义和函数定义吗?是为了清晰起见还是为了读者?

谷歌搜索找到的唯一类似语法是airbnb风格的指南,它似乎是一个可读性/清晰性的东西。

当我开始更多地使用Graph QL时,只是在寻找超越我假设的确认或解释。

共有2个答案

钱旻
2023-03-14

这是为了清楚起见,为了编译器和读者。示例中的字段:语法似乎是一个明确的赠品,表明这是一个对象文字,但以下面的代码为例:

let f = () => {
  field: 'value'
}

console.log(f()) //=> undefined
游炳
2023-03-14
fields: () => ({
  field: {/*etc.*/}
})

是一个隐式返回对象(文本)的函数。在不使用()的情况下,JavaScript解释器将{}解释为函数体的包装,而不是对象。

如果不使用圆括号:()字段:...语句被视为标签语句,函数返回定义。等效的语法是:

fields: () => { // start of the function body
   // now we have to define an object 
   // and explicitly use the return keyword
   return { field: {/*etc.*/} }
}

所以父母不是为了澄清。它适用于使用箭头函数的隐式返回特性。

 类似资料:
  • 问题内容: 我一直在研究一些Graph QL / React / Relay示例,但遇到了一些奇怪的语法。 在Graph QL Objects中定义字段时,使用以下语法: 根据我的收集,这只是定义一个匿名函数并将其分配给xType.fields。该匿名函数返回包含字段定义的对象。 我假设使用Graph QL模式机制,但必须将其定义为返回对象而不是简单返回对象的函数。但是令我困惑的部分是花括号周围的

  • 我对飞镖/颤动非常陌生,我对= 布尔isNoble(整数原子数)= 当我试图在flutter应用程序中设置状态时,我的疑问就来了。 现在,当我用 = 更改 setState 方法时 上面提到的两种方法都可以工作,也就是说,它们按预期设置状态。我所要做的就是在使用胖箭头符号时将分号改为逗号。 这背后的逻辑是什么?粗箭头符号是如何与包含多个表达式的花括号一起工作的。 编辑 正如赫曼斯·拉杰所提到的=

  • 问题内容: 可以有人,请解释以下内容: 我正在关注Dan Abramov的讲座并进行练习。 该代码工作正常,但是,当以下特定功能 用 大括号编写时,测试将失败。 相同的代码在 没有 大括号的 情况下也 可以正常工作。 这是JsBin。请从第31行开始。 问题答案: case ‘toggleTodo’ : return ( state.map( (one) => oneTodo( one, acti

  • 问题内容: 我是ES6和React的新手,并且我不断看到箭头功能。为什么某些箭头函数在粗体箭头之后使用花括号,而另一些使用括号?例如: 与 谢谢你的帮助! 问题答案: 括号返回单个值,花括号执行多行代码。 您的示例看起来很混乱,因为它使用的是JSX,看起来像多个“行”,但实际上只是被编译为一个“元素”。 这里有一些其他例子,它们都做同样的事情: 您还会经常在对象文字周围看到括号,因为这是避免解析器

  • 新的“胖箭头”符号还可以用更简单的方式来定义匿名函数。 请看下面的例子: console.log(x); incrementedItems.push(x+1); }); 计算一个表达式并返回值的函数可以被定义更简单: 下面代码与上面几乎等价: incrementedItems = items.map(function (x) { return x+1; 让我们在 验

  • 问题内容: 我不明白为什么 在arrow函数中 我们不需要 将arrow函数 的文字包装在大括号中,而不是在此示例中将文字包装在单个大括号中。为什么?我已经上网冲浪了,但是找不到答案。 还有为什么我们将论点放在双括号中,而不是仅仅放在右括号中? 问题答案: 使用是参数和是等价的回报隐含并且仅提供一个对象的开始和功能体的开口括号之间的歧义,当你有一个多返回值一般会被使用。您可以简单地避免使用并将其与