ES2015 で空のオブジェクトを返すアロー関数を書いてハマる

普通に考えれば当たり前なんですが、最初なにが起きてるのか分からなくてハマりました...。

const func = () => {}
func() // => undefined

ようするに {} がオブジェクトのリテラルではなく、関数のブロックとして認識されているようです。で、return 文がないため undefined が返されます。

なので、これならOKです。

const func = () => { return {} }
func() // => {}

もしくはこう。

const func = () => new Object()
func() // => {}

あまり需要はないかもしれないですが。

その他

どうやら ES6 より ES2015 が推奨っぽいので、今日から ES2015 と呼ぶことにしよう。

追記 (2018/01/11)

括弧で囲めば式として扱われる模様。

const func = () => ({})
func() // => {}