デジハリオンラインスクール9月30日まで10%OFF

JavaScriptにおける暗黙の型変換とは?

3 min 52 views
JavaScript 暗黙の型変換

暗黙の型変換とは?

JavaScriptでは、文字列や数値、真偽値(true/false)など、さまざまなデータ型を扱えます。

例えば、1 + “2”を実行するとどうなるでしょうか?

console.log(1 + "2"); // "12"

本来なら数値の足し算を期待するところですが、JavaScriptは 数値 1 を文字列に変換 し、「12」という文字列を返してしまいます。

このように、プログラマーが明示的に変換を指示していないのに、JavaScriptが勝手に型を変換することを 暗黙の型変換 と呼びます。

暗黙の変換が起こる場面

大きく分けると次の3つの場面で起こります。

  1. 数値と文字列の演算
  2. 真偽値の判定(if文など)
  3. 比較演算子(== と === の違い)

それぞれ具体例を見てみましょう。

1. 数値と文字列の演算

JavaScriptは演算子によって、勝手に数値や文字列を変換します。

結果理由
1 + "2""12"数値が文字列に変換されて結合
"3" * 26文字列 "3" が数値に変換される
"10" - 37"10" が数値に変換される
"abc" * 2NaN"abc" を数値に変換できないため

👉 ポイント

+ は文字列結合も兼ねているため、数値が文字列に引きずられることが多いです。

created by Rinker
¥3,520 (2025/09/22 19:39:35時点 楽天市場調べ-詳細)

2. 真偽値への変換(Truthy / Falsy)

if文や論理演算では、自動的に値が true/false に変換されます。

JavaScriptでは次の値が (false 相当 / falsy) とみなされます。

判定結果
0false
""(空文字)false
nullfalse
undefinedfalse
NaNfalse
falsefalse

上記以外はすべて true(truthy) になります。

例:

if ("hello") {
  console.log("実行される"); // truthy
}

if (0) {
  console.log("実行されない"); // falsy
}

👉 ポイント

初心者がよく混乱するのは、"0"(文字列のゼロ)は truthy だという点です。自分は少しの間勘違いしていました。

3. 比較演算子(== と ===)

JavaScriptの比較演算子には ===== の2種類があります。

  • == … 型を自動変換してから比較
  • === … 型も値も一致しているか比較(厳密比較)
結果理由
1 == "1"true文字列 "1" が数値に変換される
1 === "1"false型が異なるため
0 == falsetruefalse が数値 0 に変換される
0 === falsefalse型が異なるため

👉 ポイント

基本的に ===(厳密比較)を使うことを推奨 します。

典型的な暗黙変換のまとめ

よくある暗黙変換のパターンを表で整理します。

数値に変換文字列に変換真偽値に変換
undefinedNaN"undefined"false
null0"null"false
true1"true"true
false0"false"false
""(空文字)0""false
"123"123"123"true
"abc"NaN"abc"true
created by Rinker
¥5,060 (2025/09/22 19:39:35時点 楽天市場調べ-詳細)

初学者が混乱しやすいポイント

  1. 0false の違い
    • 0 == false は true になるが、0 === false は false。
    • 厳密比較を使うことで混乱を避けられる。
  2. 空文字と null/undefined
    • "" == 0 は true になる。
    • しかし null == 0 は false。挙動がバラバラなので注意。
  3. NaN の扱い
    • NaN(Not a Number)は、何と比較しても false。
    • NaN == NaN すら false になる
console.log(NaN == NaN); // false
console.log(Number.isNaN(NaN)); // true

👉ポイント

NaN を判定するには Number.isNaN() を使うのが正解。

暗黙の変換を避けるコツ

暗黙の変換は便利なこともありますが、予期せぬバグの原因にもなります。
以下の方法で安全にコーディングしましょう。

  1. 常に === を使う(型変換を伴う == は避ける)
  2. 明示的な型変換を行う
    • 文字列 → 数値: Number("123")
    • 数値 → 文字列: String(123)
    • 真偽値 → 数値: Number(true)1
  3. NaN 判定には Number.isNaN() を使う

例:

const num = Number("123");
if (num === 123) {
  console.log("正しく変換された");
}

まとめ

JavaScriptの暗黙の変換は便利ですが、理解していないとバグの温床になります。

  • 数値と文字列の演算では「+」に注意
  • if文では falsy / truthy を理解すること
  • 比較には基本的に === を使うこと
  • NaN の判定は専用メソッドを使う

これらを意識するだけで、初学者でも安心してコードを書けるようになります。

👉 まずは実際に console.log() を使って試し、結果を目で確認するのが一番の学習方法です。

JavaScript講座、購入したので後日レビューします。今のところ良い感じです!

あわせて読みたい

関連記事