暗黒四則演算
はい、おはようございます。頭の悪いことで有名な僕です。しかしながら、そんな僕も最近算数と言うものを覚えて「1+1=2」とかが分かるようになりました。やったーーーー。そういったわけでして皆さん褒めてください。ほめてーーーーーーーーーーーーーーーーーーーーーーー。
はい、まあ茶番はどうでもいいですね。本日はJavaScriptの暗黒用法を覚えたのでそれを使って算数をやっていきます。というわけで問題です。これらの数字を足した値は何になるでしょう?
みなさんは僕よりも賢いと思うのでらくしょーですよね?なんてったって算数ですから。
解説
JavaScriptの仕様変更とかで今後答えが代わることもあるかもしれないけど解説していきます。一応答えをすぐに出さない配慮的なやつとして下の方に解説置いときますんで興味あれば、お手数ですが下までスクロールしてね。
参考資料
MDN Web Docs
A = Object.length;
理由はわからないが「1」を返すと定義しているらしい……。
Object.length
1 という値を持ちます。
B = [0,0,].length;
3と思いきや「2」です。末尾が空だと無視されます。
C = String(0/0).length;
「0/0」の計算結果"Nan"の文字数をカウントしたもの。つまり「3」となります。
D = String(!0).length;
これも上の方法に同じく"True"が返ってくるので「4」です。0は数値ですけど、真偽値で判定するとfalseらしいですよ。
E = String(![]).length;
これも上の方法と同じことやっていて"false"が返ってくるので「5」になります。
F = String(()=>{}).length;
「()=>{}」が返ってくるのでその文字数カウントとして「6」になります。個人的にこの評価はかなりエモいと思ってる。
G = parseInt('111', 2);
他と毛色の違う普通の問題になってしまいました。2進数での111は「7」なので「7」となります。
H = String(1/0).length;
「1/0」の計算結果"Infinity"の文字数をカウントしたもの。つまり「8」となります。
I = String(void 0).length;
"undifined"が返ってくるので、その文字数をカウントして「9」です。
J = String([]).length;
なんかネタが思いつかなくて無理やり仕込んだやつ。スゲー普通。何もないので「0」となります。
以上、これらを足すと1~9の足し算になるので答えは……。
という感じでJavaScriptの闇を知ってしまったので記事にしてみた。.length
って普通にループで回すのに使うのでこの深淵は割と近くに潜んでいます。