
JavaScriptは“簡単なようで難しい”―
そんな摩訶不思議な言語に魅了されたあなたに贈る、SNSでバズったJS問題5選。
どれもTwitter(現X)や技術ブログで多くのエンジニアを混乱させた問題ばかり。
「わかると思ったら落とし穴」なJSの世界へ、ようこそ。
Contents
🧠 第1問:これは true?false?
javascriptコピーする編集する[] == ![];
あなたの予想は? true or false <details> <summary>▶️ 答えと解説を見る</summary>
✅ 答え:true
なぜ!?と思った方も多いはず。
![]→false(空配列はtruthyなので否定でfalse)[] == falseに変換される==は型変換を伴うので[]→''→0、false→0
つまり、0 == 0 ⇒ true </details>
🔥 第2問:typeof null は何?
javascriptコピーする編集するtypeof null;
A. null
B. object
C. undefined <details> <summary>▶️ 答えと解説を見る</summary>
✅ 答え:B. object
これは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>
✅ 答え:B. 3, 3, 3
なぜ?
varは関数スコープ- ループ後の
iは3になっている - 全ての
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>
✅ 答え:false
理由は「浮動小数点演算の誤差」。
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>
✅ 答え:NaN
解説:
jsコピーする編集する{} + {} // → NaN
理由は、最初の {} がブロック文として解釈されるため。以下のように括弧を使うと挙動が変わります:
jsコピーする編集する({} + {}) // "[object Object][object Object]"
</details>
🎉 まとめ:JSは“罠”も含めて楽しい!
いかがでしたか?
これらのクイズは「なんで!?」と思うことが学びにつながる、JS学習の醍醐味です。
- 型変換の不思議
- スコープとクロージャ
- 浮動小数点の罠
- シンタックスの解釈順序
あなたもぜひSNSでシェアして、友達やフォロワーを混乱させてみてください😈✨
コメント欄で「何問正解できたか」も教えてください!
Procom開発ブログでは、今後もJS・CSS・Next.jsなどの“実戦で役立つワザ”を定期更新します。ぜひブックマーク&フォローをお願いします!








