es6 で空のオブジェクトを返す関数書こうと思って () => {} って書いたら undefined が返っちゃって30分くらいハマってしまった...
— kntmr (@knt_mr) 2018年1月9日
普通に考えれば当たり前なんですが、最初なにが起きてるのか分からなくてハマった...。
const func = () => {} func() // => undefined
つまり、{}
がオブジェクトのリテラルではなく、関数のブロックとして認識されている模様。で、return 文がないので undefined
が返る。
こうする。
const func = () => { return {} } func() // => {}
もしくはこう。
const func = () => new Object() func() // => {}
あまり需要はないかもしれないですが。
その他
どうやら ES6 より ES2015 が推奨っぽいので、今日から ES2015 と呼ぶことにしよう。
追記 (2018/01/11)
括弧で囲めば式として扱われる模様。
const func = () => ({}) func() // => {}