JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptの型変換(型キャスト)とは?自動変換と明示的な変換を徹底解説

あるデータ型を別のデータ型に変換することを「型キャスト(型変換)」と呼びます。プログラミングでは、値のデータ型を別の型に変換する必要が生じることがあります。JavaScriptでは、特定の状況下において自動的に型変換が行われるのが特徴です。

型変換の種類

JavaScriptの型変換には、大きく分けて「自動的な型変換(暗黙的な変換)」と「明示的な型変換」の2種類があります。

自動的な型変換(暗黙的な変換)

JavaScriptは、条件式の中で真偽値(boolean)を期待します。そのため、if文を評価する際には、括弧内の値が一時的に真偽値へと変換されます。

if (val) {
    console.log( 'yes, val exists' );
}

以下の値は「false」として評価されます。

  • 0(数値のゼロ)
  • -0(負のゼロ)
  • ''(空文字列)
  • NaN
  • undefined
  • null

これら以外のすべての値は「true」として評価されます。空の配列や空のオブジェクトであってもtrueになる点に注意してください。

また、「==」(等価演算子)や「!=」(不等価演算子)を使って値を比較する場合にも、型変換が行われます。例えば、数値の125と文字列の'125'を「==」で比較すると、式はtrueと評価されます。

console.log( 125 == '125' ); // true

一方、「===」(厳密等価演算子)や「!==」(厳密不等価演算子)を使用した場合には、型変換は行われません。型まで含めて厳密に比較されるため、予期しない挙動を避けたい場合はこちらの使用が推奨されます。

明示的な型変換

開発者が意図的に型を変換したい場合は、以下のメソッドや関数を使用します。

parseInt と parseFloat

parseInt関数は、第1引数を文字列に変換した上で解析し、整数またはNaNを返します。

parseFloat()関数は、引数を解析し(必要に応じて先に文字列へ変換)、浮動小数点数を返します。

toString

toString()メソッドは、オブジェクトを表す文字列を返します。つまり、オブジェクトを文字列へ変換しようとします。

実行例

以下は、toString()メソッドを使って数値を文字列に変換する例です。

let a = 1.015
console.log(a)
console.log(typeof a)
console.log(a.toString())
console.log(typeof a.toString())

出力結果

1.015
number
1.015
string

この例では、変数aは元々「number」型ですが、toString()メソッドを呼び出すことで「string」型に変換されていることが確認できます。このように、JavaScriptでは状況に応じて自動・明示の両方の方法で型変換が行われます。

  1. JavaScriptの「for...in」ステートメントとは?オブジェクトのプロパティをループ処理する方法を解説

    JavaScriptのfor...in文は、オブジェクトが持つすべてのプロパティ(列挙可能なプロパティ)を順番に取り出して処理するためのループ構文です。オブジェクト内の各キー(プロパティ名)にアクセスしながら、対応する値を取得したい場合に非常に便利です。for...inの基本的な構文for (let 変数名 in オブジェクト) { // 各プロパティに対して実行したい処理 }ループ変数には、各反復ごとにオブジェクトのプロパティ名(キー)が文字列として代入されます。値そのものを取得するには、「オブジェクト[変数名]」のようにブラケット記法を使ってアクセスします。サンプルコード以下は、for

  2. 【図解付き】JavaScriptにおけるオブジェクトの等価性をわかりやすく解説

    JavaScriptでは、文字列・数値・真偽値などのプリミティブ型はその「値」に基づいて比較されます。一方、オブジェクト(ネイティブオブジェクトでも独自に定義したカスタムオブジェクトでも)は「参照」に基づいて比較されます。 「参照による比較」とは、複数のオブジェクトがメモリ上の同じ場所を指しているかどうかを判定するという意味です。つまり、プロパティの中身が完全に一致していても、別々に生成された2つのオブジェクトは等しいとみなされません。 押さえておきたいポイント プリミティブ型: 値が同じであれば == や === の比較で true になる オブジェクト型: 同じインスタンス(同一の参照