paint-brush
JavaScript の型強制と型キャストとは何ですか?@kirmani
6,312 測定値
6,312 測定値

JavaScript の型強制と型キャストとは何ですか?

Kirmani4m2023/05/25
Read on Terminal Reader

長すぎる; 読むには

プログラミング言語では、データは整数、文字列、浮動小数点数、ブール値などのさまざまなタイプに分類されます。データをある型から別の型に変換または強制する機能は、操作を実行し、データを操作し、プログラム内のデータの互換性と一貫性を確保するために不可欠です。型強制とは、操作で異なる型のデータが一緒に使用されるときに JavaScript で行われるデータ型の自動変換を指します。
featured image - JavaScript の型強制と型キャストとは何ですか?
Kirmani HackerNoon profile picture
0-item
1-item

型強制と型キャストは、ある型から別の型へのデータの変換を伴うプログラミングの基本的な概念です。プログラミング言語では、データは整数、文字列、浮動小数点数、ブール値などのさまざまなタイプに分類されます。データをある型から別の型に変換または強制する機能は、操作を実行し、データを操作し、プログラム内のデータの互換性と一貫性を確保するために不可欠です。

型強制:

型強制とは、操作で異なる型のデータが一緒に使用されるときにJavaScriptで行われるデータ型の自動変換を指します。たとえば、数値と文字列を加算すると、JavaScript は自動的に数値を文字列に変換して演算を実行します。

 const num = 5; const str = "3"; console.log(num + str); //output: "53"


上の例では、数値 5 が文字列「5」に自動的に変換され、文字列「3」と連結されて出力「53」が得られます。型強制の他の例としては、次のようなものがあります。


  • 比較に==または!=演算子を使用し、比較を行う前に型強制を実行します。
  • 値の前に単項プラス ( + ) 演算子を使用すると、Number への型強制が実行されます。ただし、 +記号は 1 回だけ使用でき、その後に空白を続けてはなりません。


たとえば:

 const x = "5"; const y = +x; console.log(typeof y); // output: number


JavaScript で値の先頭に単項+演算子を使用するのはNumber関数の短縮形であるとよく考えられています。しかし、そうではありません。単項+演算子とNumber関数はどちらも同じアルゴリズムを使用して文字列を数値に変換しますが、微妙な違いがあります。


たとえば、 + BigInt遭遇するとTypeErrorをスローしますが、 Number()BigIntの数値を返しますが、精度が失われる可能性があります。強制は、同じ方法で文字列の前に単項否定 ( - ) 演算子を使用した場合にも発生します。


  • ifステートメントを使用すると、比較を行う前に値を強制的にブール値に変換します。

  • &&||を使用する?:演算子。操作を実行する前に値を強制的にブール値に変換します。


型キャスト:

一方、型キャストとは、データ型の明示的な変換を指します。これはNumber()String()Boolean()Symbol()などのキャスト関数を使用して行われます。

 const str = '5'; const num = Number(str); console.log(num); //output: 5


この例では、変数numは数値型ですが、 String()関数を使用して明示的に文字列に変換しました。 JavaScript のいくつかの型キャスト関数と、その使用法を示すサンプル コードを見てみましょう。


  • Number() : Number()関数は、数値以外の値を数値に変換するために使用されます。たとえば、文字列値「10」を数値に変換する場合は、次のようにNumber()関数を使用します。
 const x = "5"; const y = x+10 const z= Number(x)+10; console.log(y); // output: 510 console.log(z); // output: 15


  • parseInt() : parseInt関数は、値を整数に変換するために使用されます。 Number()parseFloat()とは異なり、10 進数以降の値は無視されます。例えば:
 const intValue = parseInt("3.14"); console.log(floatValue); // Output: 3


  • parseFloat() : parseFloat()関数は、文字列値を浮動小数点数に変換するために使用されます。一部の場合を除いて、 Number()と非常によく似ています。以下の例を見て、 parseFloat() parseInt()およびNumber()とどのように比較されるかを見てみましょう。
 console.log(parseInt('22.5')); // Output: 22 console.log(parseFloat('22.5')); // Output: 22.5 console.log(Number('22.5')); // Output: 22.5 console.log(parseInt('070')); // Output: 70 console.log(parseFloat('070')); // Output: 70 console.log(Number('070')); // Output: 70 console.log(parseInt('1234blue')); // Output: 1234 console.log(parseFloat('1234blue')); // Output: 1234 console.log(Number('1234blue')); // Output: NaN console.log(parseInt('0xFF')); // Output: 255 console.log(parseFloat('0xFF')); // Output: 0 console.log(Number('0xFF')); // Output: 255 console.log(parseInt("10 20 30")); // 10 console.log(parseFloat("10 20 30")); // 10 console.log(Number("10 20 30")); // NaN


  • String() : String()関数は、非文字列値を文字列値に変換するために使用されます。以下の例は、 String()関数を使用してさまざまなタイプの値を文字列に変換する方法を示しています。
 const num = 10; console.log(String(num)); // "10" const bool = true; console.log(String(bool)); // "true" const obj = {name: "John"}; console.log(String(obj)); // "[object Object]" const arr = [1, 2, 3]; console.log(String(arr)); // "1,2,3" const date = new Date(); console.log(String(date)); // "Sun Jan 29 2023 18:52:01 GMT+0000 (Coordinated Universal Time)"


  • Boolean() : Boolean関数は、非ブール値をブール値に変換するために使用されます。たとえば、数値 0 をブール値に変換したい場合は、次のようにBoolean()を使用します。
 let value = 0; console.log(Boolean(value)); // false value = "hello"; console.log(Boolean(value)); // true value = undefined; console.log(Boolean(value)); // false value = {}; console.log(Boolean(value)); // true value = -1; console.log(Boolean(value)); // true


以上です、皆さん。この記事が、JavaScript における型の in と out の変換を理解するのに役立つことを願っています。これで、変数をさまざまな型に明示的にキャストする方法 (型キャスト) と、JavaScript がそれを暗黙的に行う方法 (型強制) をしっかりと理解できました。


これらの機能をマスターするには、練習と実験を続けてください。質問がある場合は、「いいね!」、共有、フォロー、コメントすることを忘れないでください。コーディングを楽しんでください!

プロのヒント:

抽象的な等価比較===の代わりに、厳密な等価比較==を使用します。特に算術演算では、JavaScript の暗黙的な型強制に頼ることを避け、必要に応じて常に型キャストを使用してください。


こちらでも公開しております。