JavaScript/基礎/Lesson 06
型強制変換 — *== の落とし穴*
40分·theory
このチャプター
5/5
型強制変換 — *== の落とし穴*
🎯 このレッスンを読み終えたら
このレッスンを読み終えると、以下の3つを自信を持って扱えるようになります。
- ▸✅ 暗黙的変換 (
==/+/-) の動作規則 - ▸✅ falsy な6つの値 (0 · '' · null · undefined · NaN · false)
- ▸✅
Object.is/Number.isNaNの正確な動作
学習目標をチェックリストとして手元に置き、すべて答えられるようになったらレッスンを閉じてください。
== vs === — *常に === を使う*
核心を一言で
JavaScript の == は比較の前に型を揃えてしまいます。予期しない結果が頻繁に起きます。常に === を推奨。
== の衝撃的な挙動
最後の行を見てください。配列がその自身の否定と等しい。JS の暗黙的変換が生み出す狂った結果です。
=== — 安全な比較
=== は値と型の両方が一致したときだけ true。予測可能。
ESLint が強制する理由
ほとんどの lint 設定では eqeqeq ルールがデフォルトで有効になっています。新しいコードでは常に === を使いましょう。一度慣れると、== を見るだけで違和感を覚えるようになります。
> 例外: null と undefined の両方をまとめて捕捉したい場合:
このパターンのみ一部のコードスタイルで許可されています。それ以外は常に ===。
Truthy / Falsy
if (value) で値が存在するかどうかを手軽にチェックできます。ただし、空の配列や "0" といった落とし穴も把握しておく必要があります。
最もよくある落とし穴
1. 入力値の比較:
2. JSON から受け取った数値:
JSON は型を保持するため、通常は安全です。ただし、大きな整数は bigint への変換が必要です。
まとめ
- ▸常に
===を使う。==は予期しない結果をもたらす - ▸空の配列や
"0"もtruthy であることを覚えておく - ▸入力値は明示的に変換してから比較する
⚡ 実際に試してみよう — == vs ===
`==` が自動変換によって生み出す衝撃的な結果を、`===` と比較してみてください。
✏️ JS 코드
📟 コンソール出力
▶ 実行ボタンを押してください
⚠️ ブラウザのサンドボックスで実行 — console.log()のみ対応、alert/fetchは不可
🤖 AIへの指示をこう変えてみよう
このレッスンの概念を理解すれば、AIに具体的な指示を出せるようになります。漠然とした「直して」ではなく、語彙を持ったリクエスト — それがトークン節約の出発点です。
- ▸「この変数に適切な TypeScript の型アノテーションを追加して」
- ▸「=== と == が混在している箇所を === に統一して意図を明確にして」
- ▸「このコードの JSON.parse の結果に unknown 型 + 型ガードを追加して」
なぜこれがトークンを削減するのか
概念を知らないままだと、AIの回答を受け取った後でも「それって何ですか?」と再度聞く必要があります。その「再質問」がトークンを消費します。概念を一度習得しておけば、会話が一回で完結します。
先に読むとよい概念: 制御フロー — if · for · while · switch
次のおすすめ: 関数の基礎