数値とストリングの型変換 [Edit]

「ストリング → 数値」の型変換

ActionScriptは型づけの弱い言語で、変数を使用する場合も、型の宣言をする必要はありません。必要に応じてデータ型が自動的に変換されます。ここでは、もっとも簡単な数値とストリングの型変換について説明します。

算術演算子や比較演算子などは、オペランドに数値を取ります。
しかし、数値以外のオペランドを渡されても、ActionScript は文句もいわず、何とか式を評価しようと努力します。例えば、ストリングのオペランドを渡されたとき、ActionScript はストリングのデータ型を数値に型変換します。多くの場合、それは徒労に終わり、まともな値にはなりませんが(多くの場合 ' NaN ' :数字ではないという値になります)、それでも ActionScript はあきらめず、その値を使用して式を評価します。本来なら、エラーを出してくれるとありがたいのですが、残念ながら意味のない値を作り出してくれます。

この型変換が有効に機能するのは、渡されたオペランドが '0'~'9' の半角数字だけで構成されたストリングの場合です。例えば、"15"、"169"、"1025" などのストリングが渡された場合は、数値の ' 15 '、' 169 '、' 1025 ' に型変換され、期待された値を返す式となります。これは、あくまでも半角数字(1バイト)の場合であり、全角(2バイト)数字や漢数字などは含みません。

例で見てみましょう。

  n = "50" - 25 ; // 結果は25
  n = 3 * "4" ; // 結果は12
  n = "60" / "3" ; // 結果は20
  b = "40" == 40 ; // 結果はtrue
  b = 40 != "40" ; // 結果はfalse
  b = "20" > 10 ; // 結果はtrue
  b = 55 < "40" ; // 結果はfalse
  b = "50" >= "40" ; //

これらの式はいずれも、数値オペランドのときと同様に、期待する結果となります。


加算演算子(+)使用時は逆の「数値 → ストリング」の型変換!

ただし、「ストリング → 数値」の型変換にも例外があります。
加算演算子(+)を使用した加算式の場合には、これとは逆の「数値 → ストリング」の型変換が実行されます。これは、加算演算子とストリング演算子が同じ記号(+)であるために起こる特殊なケースですが、間違いやすいので注意が必要です。
なお、この問題は「加算とストリング(文字列)連結」に詳しくまとめてありますので、そちらをご覧ください。

n = "50" + 25 ; // 結果は"5025"


・関連項目

演算子
算術演算子
ストリング演算子

その他の記事