はじめに
以前は毎週参加していたSendagaya.rbですが、新生活が始まり心身の余裕がなく、ここ1・2ヶ月は参加しておりませんでした。
しかし、新生活や社内の研修にも少しずつ慣れてきて、心身の余裕ができ始めたので今回参加させていただきました。
sendagayarb.doorkeeper.jp
参加レポートとして話題に挙がったことと、自分の感想をまとめます。
話された内容
参加者の方々が持ち寄ったテーマについてみんなで意見を交換し合うという感じです。
話された内容をピックアップして以下に書きます。
JavaScriptのreduce
について
@tkawaさんから以下の記事を紹介していただきました。 qiita.com
私はそもそも「ループの回数が分からなくて困るケース」ってあるのかなぁと疑問でした。
記事を読んでも、その疑問は拭えず…。
一方で、やはりデバッグのときに処理を差し込めないから、少しだけデバッグが厄介になるかもしれないという意見も上がりました。
JavaScriptの怖い話
@sanfrecce_osakaさんの体験談。
これはその場に衝撃が走った内容でした。
実は…forEach
は、emptyをスキップします
つまりどういうことかというと、以下のように配列を定義するとempty
というモノが含まれる配列が作成されます(私はempty
の存在も初めて知りました)。
この時、empty
を含む配列array1
に対してforEach
を実行すると、empty
はスキップされて、2回しかループが回らないのです…。
let array1 = ['a', ,'c']; console.log(array1); arrya1.forEach(element => console.log(element)); //=> ["a", empty, "c"] //=> "a" //=> "c"
さらに、怖いことにempty
を含む配列のlength
はempty
もカウントされてしまいます…。
let array1 = ['a', ,'c']; console.log(array1.length); //=> 3
length
を信じられないなんて…まあ、怖い…。
感想
久しぶりの参加でしたが、とても楽しかったです。
やはり何回も参加させていただいているコミュニティだと気心知れた感じがあっていいですね。
話題に上がった内容も興味深いものでした。
特にJavaScriptのforEach
の話は、知らなかったらハマり倒していたんだろうと背筋がゾッとしました。
また定期的に参加させていただきたいと思います。