目次
暗黙の型変換とは?
JavaScriptでは、文字列や数値、真偽値(true/false)など、さまざまなデータ型を扱えます。
例えば、1 + “2”を実行するとどうなるでしょうか?
console.log(1 + "2"); // "12"
本来なら数値の足し算を期待するところですが、JavaScriptは 数値 1 を文字列に変換 し、「12」という文字列を返してしまいます。
このように、プログラマーが明示的に変換を指示していないのに、JavaScriptが勝手に型を変換することを 暗黙の型変換 と呼びます。
暗黙の変換が起こる場面
大きく分けると次の3つの場面で起こります。
- 数値と文字列の演算
- 真偽値の判定(if文など)
- 比較演算子(== と === の違い)
それぞれ具体例を見てみましょう。
1. 数値と文字列の演算
JavaScriptは演算子によって、勝手に数値や文字列を変換します。
式 | 結果 | 理由 |
---|---|---|
1 + "2" | "12" | 数値が文字列に変換されて結合 |
"3" * 2 | 6 | 文字列 "3" が数値に変換される |
"10" - 3 | 7 | "10" が数値に変換される |
"abc" * 2 | NaN | "abc" を数値に変換できないため |
👉 ポイント
+
は文字列結合も兼ねているため、数値が文字列に引きずられることが多いです。
2. 真偽値への変換(Truthy / Falsy)
if文や論理演算では、自動的に値が true/false に変換されます。
JavaScriptでは次の値が 偽(false 相当 / falsy) とみなされます。
値 | 判定結果 |
---|---|
0 | false |
"" (空文字) | false |
null | false |
undefined | false |
NaN | false |
false | false |
上記以外はすべて 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 == false | true | false が数値 0 に変換される |
0 === false | false | 型が異なるため |
👉 ポイント
基本的に ===
(厳密比較)を使うことを推奨 します。
典型的な暗黙変換のまとめ
よくある暗黙変換のパターンを表で整理します。
値 | 数値に変換 | 文字列に変換 | 真偽値に変換 |
---|---|---|---|
undefined | NaN | "undefined" | false |
null | 0 | "null" | false |
true | 1 | "true" | true |
false | 0 | "false" | false |
"" (空文字) | 0 | "" | false |
"123" | 123 | "123" | true |
"abc" | NaN | "abc" | true |
初学者が混乱しやすいポイント
0
とfalse
の違い0 == false
は true になるが、0 === false
は false。- 厳密比較を使うことで混乱を避けられる。
- 空文字と null/undefined
"" == 0
は true になる。- しかし
null == 0
は false。挙動がバラバラなので注意。
- NaN の扱い
- NaN(Not a Number)は、何と比較しても false。
NaN == NaN
すら false になる。
console.log(NaN == NaN); // false
console.log(Number.isNaN(NaN)); // true
👉ポイント
NaN を判定するには Number.isNaN()
を使うのが正解。
暗黙の変換を避けるコツ
暗黙の変換は便利なこともありますが、予期せぬバグの原因にもなります。
以下の方法で安全にコーディングしましょう。
- 常に
===
を使う(型変換を伴う==
は避ける) - 明示的な型変換を行う
- 文字列 → 数値:
Number("123")
- 数値 → 文字列:
String(123)
- 真偽値 → 数値:
Number(true)
→1
- 文字列 → 数値:
- NaN 判定には
Number.isNaN()
を使う
例:
const num = Number("123");
if (num === 123) {
console.log("正しく変換された");
}
まとめ
JavaScriptの暗黙の変換は便利ですが、理解していないとバグの温床になります。
- 数値と文字列の演算では「+」に注意
- if文では falsy / truthy を理解すること
- 比較には基本的に
===
を使うこと - NaN の判定は専用メソッドを使う
これらを意識するだけで、初学者でも安心してコードを書けるようになります。
👉 まずは実際に console.log()
を使って試し、結果を目で確認するのが一番の学習方法です。
JavaScript講座、購入したので後日レビューします。今のところ良い感じです!

あわせて読みたい