【保存版】あなたは解ける?爆速で拡散された“罠”だらけのJavaScript問題 5選

JavaScriptは“簡単なようで難しい”―
そんな摩訶不思議な言語に魅了されたあなたに贈る、SNSでバズったJS問題5選。

どれもTwitter(現X)や技術ブログで多くのエンジニアを混乱させた問題ばかり。
「わかると思ったら落とし穴」なJSの世界へ、ようこそ。


🧠 第1問:これは true?false?

javascriptコピーする編集する[] == ![];

あなたの予想は? true or false <details> <summary>▶️ 答えと解説を見る</summary>

なぜ!?と思った方も多いはず。

  • ![]false(空配列はtruthyなので否定でfalse)
  • [] == false に変換される
  • == は型変換を伴うので []''0false0

つまり、0 == 0true </details>


🔥 第2問:typeof null は何?

javascriptコピーする編集するtypeof null;

A. null
B. object
C. undefined <details> <summary>▶️ 答えと解説を見る</summary>

これはJavaScript界の“仕様バグ”とも言われる有名なトリビア。

typeof null"object" を返す

理由は、JavaScriptが誕生した当初の実装ミスがそのまま仕様になってしまったためです(ECMA-262仕様)。 </details>


🌀 第3問:forループの罠

javascriptコピーする編集するfor (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1000);
}

出力されるのは?

A. 0, 1, 2
B. 3, 3, 3
C. エラー <details> <summary>▶️ 答えと解説を見る</summary>

なぜ?

  • var は関数スコープ
  • ループ後の i3 になっている
  • 全てのsetTimeoutで同じiを参照している

解決したいなら let を使おう:

jsコピーする編集するfor (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1000); // → 0, 1, 2
}

</details>


😈 第4問:0.1 + 0.2 === 0.3?

javascriptコピーする編集する0.1 + 0.2 === 0.3;

あなたはこれが true だと思いますか? <details> <summary>▶️ 答えと解説を見る</summary>

理由は「浮動小数点演算の誤差」。

javascriptコピーする編集する0.1 + 0.2 → 0.30000000000000004

この問題は全プログラマにとって共通の“罠”です。

jsコピーする編集するMath.abs((0.1 + 0.2) - 0.3) < Number.EPSILON // ← 比較にはこれが正解

</details>


💥 第5問:オブジェクト比較の謎

javascriptコピーする編集する{} + {};

何が返る?

A. [object Object][object Object]
B. NaN
C. エラー <details> <summary>▶️ 答えと解説を見る</summary>

解説:

jsコピーする編集する{} + {} // → NaN

理由は、最初の {} がブロック文として解釈されるため。以下のように括弧を使うと挙動が変わります:

jsコピーする編集する({} + {}) // "[object Object][object Object]"

</details>


🎉 まとめ:JSは“罠”も含めて楽しい!

いかがでしたか?
これらのクイズは「なんで!?」と思うことが学びにつながる、JS学習の醍醐味です。

  • 型変換の不思議
  • スコープとクロージャ
  • 浮動小数点の罠
  • シンタックスの解釈順序

あなたもぜひSNSでシェアして、友達やフォロワーを混乱させてみてください😈✨
コメント欄で「何問正解できたか」も教えてください!


Procom開発ブログでは、今後もJS・CSS・Next.jsなどの“実戦で役立つワザ”を定期更新します。ぜひブックマーク&フォローをお願いします!

おすすめの記事