
[code]

     module.exports = {
         add : (value1, value2) =>
         return value1 + value2
     }
    
[/code]

このように書いたところエラーになりましたが原因がわかりません。

return を消したら通りましたが、なぜreturnがあるとだめなのかがわかっていません。


CC BY-SA 4.0
2019-01-10T10:43:34.090
51865
2019-01-11T11:07:11.050
12896
question
javascript es6
es6 のreturn


ref: [アロー関数 |
MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Syntax)

arrow関数のstatements部分にreturnを用いる場合は`{}`で囲む必要がありそうです。

[code]

    module.exports = {
        add : (value1, value2) => {return value1 + value2}
    }
    
[/code]

また、returnを省略して以下のようにも書けますね。

[code]

    module.exports = {
        add : (value1, value2) => value1 + value2
    }
    
[/code]


CC BY-SA 4.0
2019-01-10T11:49:49.917
51870
2019-01-10T11:49:49.917
31669
51865
answer


`{}` を省略できるのは、書きたいコードが単一の「式」の場合だけです。代入文の右辺や関数のパラメータになれるのが式です。

`return` を含め、「文」を書きたい場合は `{}`を書く必要があります。

なぜこのような仕様になっているのかですが、[TC39 Wiki](http://tc39wiki.calculist.org/es6/arrow-
functions/)を読むと単にC#のラムダ式の文法を真似たのではと思えます(はっきりとは書いていません)。


CC BY-SA 4.0
2019-01-11T11:07:11.050
51893
2019-01-11T11:07:11.050
3475
51865
answer