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

箭头的功能与()后的意思是什么?[重复]

艾学海
2023-03-14
const actionsMap = {
  [GET_USER]: (state, action) => ({ post: action.msg })
};

我偶然发现了这个代码。我一直在使用{}格式的箭头函数,这个()包装器是什么意思?

共有3个答案

韩夕
2023-03-14

从https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Returning_object_literals

返回对象文字

请记住,使用简明语法参数返回对象文字=

var func = () =

这是因为大括号({})中的代码被解析为一系列语句(即foo被视为标签,而不是对象文本中的键)。

请记住将对象文字包装在括号中:

var func = () =

所以如果要返回对象文字,请将其包装为()

蔡晨
2023-03-14

这是ES6箭头函数。更多阅读:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

ES6

(状态、动作)=

ES5

function(state, action) {
   return { post: action.msg };
}

唐昊焜
2023-03-14

对于箭头函数,可以使用单个语句或块作为函数体。这两个是等同的:

() => foo
() => {
  return foo;
}

在您的示例中,如果lambda被定义为()=

function () {
  post: action.msg
}

这是一个命名标签和属性访问,在这里没有多大意义。通过在圆括号中包装,您向解析器暗示它是一个要计算的表达式,并且单表达式主体上的胖箭头函数规则开始生效,使其等同于:

function () {
  return {post: action.msg};
}

要在需要执行两个相关操作(在map/reduce算法中偶尔有用)时绕过单个表达式规则,可以使用parens对一对表达式进行分组:

foo.reduce((p, c) => (c.counted = true, p += c.value));

这将设置c的属性,然后将c.value添加p并将p=c.value的结果返回为newp的值。

括号在ECMAScript中包装表达式,并可使用逗号运算符对多个表达式进行分组。计算组时返回最后一个表达式的结果。

例如:

var i = 0, j = 0;
console.log((j += 10, i += 2), j);

将打印2 10,因为j()组中递增,以后再打印。

 类似资料:
  • 问题内容: 我正在尝试运行一些Android测试,但是,编译器抱怨存在多个dex文件。 所以我试图过滤重复的依赖项: 但是我得到以下输出: 我对箭头(->)的含义感到困惑。他们的意思是什么? 问题答案: 这意味着,依赖图包含相同的多个依赖和而不同的版本如。Gradle尝试自动解决冲突的版本- 默认情况下,选择最新版本。左侧是请求的版本,右侧是将要选择的版本。在这里可以找到类似的问题。

  • 我知道<代码> 代码如下:

  • 问题内容: 我之前阅读过一些Java 8教程。 现在,我遇到以下主题: Java是否支持Currying? 在这里,我看到以下代码: 我了解此示例包含2个元素,但无法理解其构造: 根据表达式的左侧,该行应实现以下功能: 在此之前,我只遇到一个箭头就遇到了lambda。 问题答案: 如果将其表示为非速记lambda语法或pre-lambda Java匿名类语法,则更清楚发生了什么… 原来的问题。为什

  • 我以前读过几本Java8教程。 现在我遇到了以下主题:java支持咖喱吗? 在这里,我看到以下代码: 我知道这个例子总结了两个元素,但我无法理解其结构: 根据表达式的左边部分,此行应实现以下功能: 在此之前,我只遇到过只有一支箭的Lambdas。

  • 我正在尝试运行一些Android测试,然而,编译器抱怨多个dex文件存在。 因此,我正在尝试筛选重复的依赖项: 然而,我得到以下输出: 我不明白箭头(->)的意思。他们是什么意思?

  • 问题内容: 我正在阅读该package的代码,然后想知道其工作原理。 我发现代码如下: 因此,我找到了- 的定义,因为它没有函数体,这很奇怪。 我想知道: 真正的代码在哪里 为什么这里可以存在“抽象方法” 为什么Go的作者这样写 谢谢! 问题答案: 1)函数定义在这里: 2)函数声明: 函数声明可以省略主体。这样的声明为Go外部实现的功能(例如汇编例程)提供了签名。 3)并非每种编程语言都可以完全