Ramdaで再起呼び出しができない

Ramdaで再起呼び出しができない:

忘備録

参考
javascript - Pointfree recursion in JS with ramda - Stack Overflow

Ramdaを使っているときに再起呼び出しができなくて困った.

上の記事の例を借用します.


こんなとき

const removeNulls = R.when(R.is(Object), 
                           R.pipe(R.reject(R.isNil), 
                                  R.map(removeNulls))); 
このように書くと,

ReferenceError: can't access lexical declaration `removeNulls' before initialization 
意訳

removeNulls? そんな関数わい知らんわ.自分ちゃんとそれ宣言したんか?


解決策

アロー関数を使えとのこと

const removeNulls = R.when(R.is(Object), 
                           R.pipe(R.reject(R.isNil), 
                                  R.map(a => removeNulls(a)))); 

自分も,なぜエラーが出るのか,なぜアロー関数を使えば解決するのかがわかっていません.

どなたか教えていただけると嬉しいです.

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)