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

如何在javascript中从一个线性箭头函数返回匿名对象?[副本]

井逸明
2023-03-14

我最近切换到es6,开始在我的代码中使用箭头函数。在重构过程中,我遇到了以下代码

data.map(function(d) {
   return {id: d.id, selected: bool};
});

我把上面的代码改成了这个-

data.map((d) => {id: d.id, selected: bool});

但是我从上面的代码得到错误。我不知道这里出了什么问题?我知道如果没有代码块,那么箭头函数提供了隐式返回。

但不知道如何返回空对象或匿名对象与一些属性初始化?

编辑:

如果我这样做有什么错?只是出于好奇。

data.map((d) => new {id: d.id, selected: bool});

共有3个答案

江志业
2023-03-14

你也可以用

data.map((d) => {
    return {id: d.id, selected: bool}
} );
谭琛
2023-03-14

您好,我想您需要添加paranthesis以返回对象文字

//将正文插入括号以返回对象文字表达式:params=

从…起https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions

齐朝明
2023-03-14

在对象初始值设定项周围放置参数

data.map((d) => ({id: d.id, selected: bool}) );

括号对其中表达式的值没有影响,但是它们确实具有消除包含表达式的第一个标记的歧义的语法效果。如果没有括号,JavaScript解析器必须决定{令牌的意思是“这里开始一个函数体”还是“这里开始一个对象初始化器”它总是选择前者(即代码块)。

因此,引入括号可以消除混淆:前导的唯一含义是“表达式来了”,因此括号内的{只能是“对象初始化器来了”(换句话说,你不能在表达式中间删除代码块;如果你尝试,那么你会得到一个语法错误。)

 类似资料:
  • 问题内容: 从箭头函数返回对象时,由于语法上的歧义,似乎有必要使用额外的和关键字集。 那意味着我不会写,但必须写。 如果arrow函数返回的不是对象,则和都是不必要的,例如:。 返回。 修饰符抛出 “::意外标记:‘”。 有什么明显的我想念的吗? 问题答案: 您必须将返回的对象文字包装在括号中。否则,花括号将被视为表示功能的主体。以下作品: 您不需要将任何其他表达式包装到括号中: 等等。

  • 它必须是基本的,但请帮助我理解为什么这不起作用。 当我编写一个普通的arrow函数并返回jsx时,它就工作了。但是,当我使用async/await请求和相同的arrow函数返回jsx时,它失败了。 编辑: 实际上,我必须在列表视图中显示用户的配置文件图像。所以,我调用这个函数来检索我的块中相应用户的图像 这很有效 但事实并非如此

  • 这里,当我返回一个箭头函数insted时,它不起作用: 我知道箭头函数是松散的,这就是为什么我在这里尝试在括号中返回它。没有他们也不行。

  • 但我想把它胖箭头化: 除了我得到一个错误,因为在胖箭头后面的意味着返回未定义的代码块(除非您显式地某些东西)。至少我一开始是这么想的。但我认为现在被绑定到胖箭头函数,现在是。 所以我试着这样做: 所以我想我有两个问题我很好奇。首先,从一个简单的语句胖箭头函数返回对象的惯用方法是什么?其次,如何返回对周围上下文的对象有引用的对象?

  • 我正在阅读ScrollListView的源代码,在一些地方我看到了的用法。 88号线。 这是的缩写吗?如果有什么不同,又是怎么回事?

  • 我使用React和Redux,并将动作类型指定为接口,这样我的还原程序就可以利用标记的联合类型来提高类型安全性。 我有如下类型声明: 我想创建创建这些动作的助手函数,我倾向于使用箭头函数。如果我这样写: 编译器无法提供任何帮助来确保这是一个有效的,因为没有明确指定返回类型。我可以通过执行以下操作显式指定返回类型: 但这需要指定我的函数参数两次,因此冗长且难以阅读。 在使用箭头符号时,有没有一种方法