koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

Sendagaya.rb#321 参加レポート

はじめに

以前は毎週参加していた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を含む配列のlengthemptyもカウントされてしまいます…。

let array1 = ['a', ,'c'];
console.log(array1.length);

//=> 3

lengthを信じられないなんて…まあ、怖い…。

感想

久しぶりの参加でしたが、とても楽しかったです。
やはり何回も参加させていただいているコミュニティだと気心知れた感じがあっていいですね。

話題に上がった内容も興味深いものでした。
特にJavaScriptのforEachの話は、知らなかったらハマり倒していたんだろうと背筋がゾッとしました。

また定期的に参加させていただきたいと思います。