JavaScript で -、*、/、==、!= などの演算を実行するときに、演算子の左側と右側の値の型が予期される型と一致しない場合、JavaScript はその値を変換します。演算子の両側を期待される型に変更して、操作を再実行します。期待値の型が文字列の場合、JavaScript は値を文字列に変換します。期待値の型が数値の場合、JavaScript は値を数値に変換します (たとえば、数値に変換できない場合は NaN が返されます)。 :
値の型変換ルール
JavaScript の値の変換ルールについては、『JavaScript – The Definitive Guide』の表 3-2 を参照してください。より注目すべき場所は次のとおりです:
1. 未定義を数値に変換した結果は NaN になります。
2. null を数値に変換した結果は 0 になります。
3. 空文字列「」を数値に変換した結果は 0 になります。
4. -0を文字列に変換した結果は「0」になります。
5. 空の配列 [] を数値に変換した結果は 0 になります。
6. 数値メンバーが 1 つだけある配列 ([9] など) を数値に変換すると、結果は数値 (9) になります。
JavaScript が文字列を数値に変換する場合、2 つの興味深いルールがあります:
1. JavaScript は文字列の先頭と末尾にある空白文字を削除してから変換するため、「42」のような文字列は数字の 42 に正常に変換されます。
2. 先頭と末尾の空白文字を削除した後、文字列に数字以外の文字が含まれている場合、文字列は NaN に変換されます。例: 「3 m」は NaN に変換されます。
例:
値の型の変換と比較
JavaScript では、等号演算子 (==) の使用には値の型の変換が含まれます。== 演算子の両側の値の型が一致しない場合、JS は判断を下す前にそれらを一貫した型に変換します。異なる型の 2 つの値は型変換後に同等になる可能性がありますが、これはそれらに対して == 演算子を使用した結果が true でなければならないという意味ではないことに注意してください。簡単な例としては、未定義と false があります。未定義をブール型に変換した後、結果はたまたま false になりますが、実際には unknown==false の結果は false になります。
明示的な型変換
JavaScript の自動型変換を使用すると非常に便利ですが、コードの保守性などの問題が発生しやすくなります。プログラム コードを明確にして曖昧さを減らすために、JS プログラムでは明示的な型変換が使用されることがあります。
自動型変換の使用
JS では、次のような値の型の自動変換を使用し、演算子を使用して明示的な変換と同じ効果を実現できます。