箭头功能中的卷曲括号

时间:2016-02-16 18:24:45

标签: javascript ecmascript-6 brackets curly-braces arrow-functions

有人可以解释以下内容:

我跟随Dan Abramov的讲座&做练习。

代码工作正常,但是当使用大括号**{ }**编写以下特定函数时,测试失败。

    case 'toggleTodo' :
        return (
            state.map( (one) => {
                oneTodo( one, action )
            })
        );

相同的代码可以正常运行,不带大括号。

    case 'toggleTodo' :
        return (
            state.map( (one) => 
                oneTodo( one, action )
            )
        );

Here is the JsBin。请参阅第31行。

2 个答案:

答案 0 :(得分:16)

这对括号形成一个,包含一个语句列表。您需要显式使用return语句才能使函数返回一些内容。

如果省略大括号,则箭头函数有一个简洁的主体,它只包含一个表达式,其结果将隐式成为函数的返回值。

答案 1 :(得分:13)

case 'toggleTodo' :
    return (
        state.map( (one) => 
            oneTodo( one, action )
        )
    );

等于:

case 'toggleTodo' :
    return (
        state.map( (one) => {
            return oneTodo( one, action )
        })
    );

参见return语句