JavaScriptの「[] + []」が空文字になる理由

配信URL:(配信済みになったら記入)

台本

オープニング

【ジングル】 はい、どうもこんにちは。「雨宿りと WEB の小噺」始まりました。Keeth こと桑原です。

この番組では、Webテクノロジーの歴史や裏側にある、ちょっとした小噺を紹介しています。

今回のお題は「JavaScriptの「[] + []」が空文字になる理由」です

本題

  • 【つかみ】JavaScriptで [] + [] を実行すると,答えは空文字 ""。さらに [] + {}"[object Object]"{} + []0{} + {}NaN になる。ブラウザのコンソールで試すと,同じ「+」なのに毎回結果が変わって混乱するはず。
  • 【背景/歴史】JavaScriptは1995年,Netscapeのブレンダン・アイクがわずか10日間(5月6日〜15日)で最初のプロトタイプ「Mocha」を書き上げたのが起源.ただしこれはあくまで社内デモ用の最小限のプロトタイプで,一般公開された JavaScript 1.0 は1996年3月,「完全版」と呼べるものは同年8月まで待つことになる.
  • 【メインの小噺・裏話】実は「暗黙の型変換」,つまり [] + [] のような挙動を生む仕組みは,最初のMochaには存在しなかった.ユーザー側から「入れてほしい」と要望が出て,アイクが後からJS 1.0に追加した機能.アイク自身はのちのインタビューで,この型変換の仕組みを「深く後悔している」と語っている.10日で作られたことそのものより,あとから足された仕様の積み重ねが,今の「奇妙な挙動」の正体に近い.
  • 【意外な事実や補足】もう一つの有名な奇妙な挙動 typeof null === "object" も,実はJava互換のために意図的に入れられた仕様.当時Netscapeは Sun とライセンス契約を結び,JavaScriptを「Javaっぽく」見せる必要があった名残.こうしたクセを一挙にネタにしたのが2012年1月,CodeMashカンファレンス(オハイオ州サンダスキー)でのゲイリー・バーンハートによる5分間のライトニングトーク「WAT」.奇妙な実行結果を次々に映し,最後に「WAT」というキャプション付きの面白画像を出すという構成で,今でもJS警鐘ネタの定番として語り継がれている.
  • 【まとめ・締めのひとこと】「JavaScriptは10日で作られたからバグだらけ」というのはやや不正確な俗説で,実際にはリリース後の機能追加やJavaとの互換性維持のための妥協が今のクセを作っている.次に [] + [] を見かけたら,10日間の突貫工事よりも,その後の20年以上にわたる継ぎ足しの歴史を思い出してみてほしい.

📎 https://buttondown.com/hillelwayne/archive/did-brendan-eich-really-make-javascript-in-10-days/ 📎 https://news.ycombinator.com/item?id=8850540 📎 https://medium.com/dailyjs/the-why-behind-the-wat-an-explanation-of-javascripts-weird-type-system-83b92879a8db

エンディング

【エンディングBGM】 さて、そろそろ今回もクロージングです 今回は「JavaScriptの「[] + []」が空文字になる理由」について話しました。

次回も、Webテクノロジーの小噺をお届けします。

この番組が気に入った方は、ぜひチャンネル登録をお願いします。 また、あなたからの感想やリクエストもお待ちしております! 𝕏で #WEB小噺 をつけて投稿していただくか、概要欄のお便りフォームからお送りください。

それでは、また次回の雨宿りでお会いしましょう!「雨宿りとWEBの小噺」お相手は Keeth でした。さようなら! 【ジングル】

results matching ""

    No results matching ""