当前位置: 首页 > 面试题库 >

ES6粗箭头和括号`(...)=>({...})`

闽承望
2023-03-14
问题内容

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

在Graph QL Objects中定义字段时,使用以下语法:

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

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

我假设使用Graph QL模式机制,但必须将其定义为返回对象而不是简单返回对象的函数。但是令我困惑的部分是花括号周围的括号。

这是要区分对象定义和功能定义吗?是为了读者的缘故?

google搜索发现的唯一类似语法是在airbnb样式指南中,在该指南中似乎是可读性/清晰度。

当我开始尝试使用Graph QL时,只是在我的假设之外寻找确认或解释。


问题答案:

fields: () => ({
field: {/etc./}
})

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

在不使用parens:的情况下(),该field: ...语句被视为一条label语句,并且该函数返回undefined。等效语法为:

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示例,遇到了一些奇怪的语法。 在图形QL对象中定义字段时,使用以下语法: 据我所知,这只是定义一个匿名函数,并将其分配给xType.fields.该匿名函数返回包含字段定义的对象。 然而,我假设图形QL模式机制是工作的,这必须被定义为返回对象的函数,而不仅仅是返回对象。但是让我困惑的部分是花括号周围的括号。 这是为了区分对象定义和函数定义吗?

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

  • 问题内容: 我在使用胖箭头功能时遇到了一些问题。如果该函数不是匿名函数,它将抱怨语法并且不会编译。 这个: 给我: 它指向等号(handleItemClick’=’)。 但是,这很好用: 我的webpack配置是否有问题,或者我缺少什么?感谢任何提示。 问题答案: 您正在尝试使用不属于ES6且es2015未涵盖的class字段,并对预设进行反应。 您可以使用Class属性transform bab

  • 主要内容:1.语法变化,2.带参数的箭头函数,3.带有默认参数的箭头函数,4.带有Rest参数的箭头函数,5.无括号的箭头函数,6.箭头函数的优点ES6中引入了箭头(Arrow)函数,它提供了一种更准确的JavaScript编写方法。 它们让我们能够编写较小的函数语法。 箭头函数的代码更具可读性和结构性。 箭头函数是匿名函数(没有名称且未与标识符绑定的函数)。 它们不返回任何值,并且可以在不使用关键字的情况下进行声明。 箭头函数不能用作构造函数。 箭头函数中的上下文是按词汇或静态方式定义的。 它

  • 问题内容: class App extends Component { constructor(props) { … } 在类中声明的两种函数 (onChange和onSubmit) 之间有什么区别?如果我将其声明为ES6类方法,但在 const url中 引用this.sate时出现错误,但是将其更改为arrow函数可以解决此问题。 我想知道两种情况下如何正确处理“ this” 另外,我该如何做

  • 问题内容: 我是React的新手,正在尝试了解语法。 我正在React 15环境中进行开发(使用react-starterify模板),并且一直在使用下面的VERSION 2中的语法,但是,我在Facebook的React页面上发现的大多数示例和教程都是VERSION 1。这两个,何时应在另一个之上使用? 版本1 版本2 问题答案: 第二个代码是 无状态功能组件, 并且是用于将组件定义为的函数的新