No.03 Javascript の記述方法
08 文字列と数字の取り扱い
 
 さて、本章第5節で配列と変数を宣言したわけですが、この宣言方式だと、「undefined」状態、つまり未定義状態では、そこに文字が入るか数字が入るかも規定されていないということになります。
 ですから、

文字列と数字の宣言
  var data01 = new Array();
  var data02 = new Array();

  data01 =  100;
  data02 = "100";

 と宣言した場合、「data01」は数字が、「data02」では文字列が記録されたことになります。


 普段は文字列と数字は別の用途で用いられているので問題はあまり発生しないのですが、Cookie からデータを取り出そうとした場合等では、そのデータは文字列になりますので、そのまま使う事は出来ません。

記述例
<Script Language = "Javascript">

  var data01 = new Array();
  var data02 = new Array();

  data01 =  100;
  data02 = "200";

  document.write ("表示テスト 合計は? " + (data01 + data02) );

</Script>
表示例
表示テスト 合計は? 100200

 結果はごらんの通り、文字列と数字を足し合わせた場合、文字列として数字を扱ってしまうため、答えは「100200」となります。ですから、

文字列と数字の取り扱い
  var data01 = new Array();
  var data02 = new Array();
  var answ = new Array();

  data01 =  100;
  data02 = "200";

  answ = data01 + data02

	

 といった計算式の場合、 文字列を指定した data02 は無論のこと、 計算用に造った answ 変数も文字列と取り扱われることになります。
 このため、文字列を数字に変換するためには、 parseInt メソッドを付加する必要があります。
記述例
<Script Language = "Javascript">

  var data01 = new Array();
  var data02 = new Array();

  data01 =  100;
  data02 = "200";

  document.write ("表示テスト 合計は? " + (data01 + parseInt(data02)) );

</Script>
表示例
表示テスト 合計は? 300

 parseIntメソッドは、 文字列から数字を読み取って、それを実際の数字として取り扱うためのもので、parseInt(data02))は、数字の「200」として取り扱われます。 このため、Cookie 等の文字列から数字を取り出すには、この命令は必須となります。

記述例
  var data01 = "200";
  var data02 = "200です";
  var data03 = "答えは200";

  document.write ("data01 = " + parseInt(data01) + " / data02 = " + 
                  parseInt(data02) + " / data03 = " + parseInt(data03));
	
表示例
data01 = 200 / data02 = 200 / data03 = NaN

 parseInt メソッドでは、文字列の最初から数字であった場合を判定して変換します。 このため、
 data01 のように、完全な数字である場合は無論のこと、
 data02 のように、数字のあとに文字が追加されている場合でも、最初の数字を変換してくれます
。 ただし、
 data03 のように、最初から数字以外の文字がある場合は、変換することが出来ません 変換できなかった場合、値は代入されず「NaN」Not a Number)が代入されます。

記述例
  var data03 = "答えは200";

  if (isNaN(parseInt(data03))) {
    var ans = 100;
  } else {
    var ans = parseInt(data03);
  }
  document.write(" ans = " + ans)

	
表示例
ans = 100

 NaNは、文字列ですので、そのまま使用することは出来ません。 このため、NaNであるかどうかをチェックするためのプロパティとして、 isNaN メソッドが用意されています。 ここに変換した数を代入することで、その値が数字であるかどうかをチェックすることが出来るわけです。
 isNaN = true の場合は文字
 isNaN = false の場合は数字
で判別することが出来ます。

記述例

  var data01="0100";
  var ans11 = (parseInt(data01));
  var ans12 = (parseInt(data01,10));
  document.write("ans11 = " + ans1 + " / ans12 = ", ans12);

	
表示例
ans1 = 64 / ans2 = 100

 これは余談ですが、変換もとの文字列 ( data01 ) の数字列の前に「0」がついていた場合と「0x」がついていた場合で、変換後の進数が異なります。 例えば上記の data01 = "0100" の場合、 parseIntメソッド で変換された後の数字は8進数となって計算されるため、64が代入されます。 前の数字に関係なく10進数で答えを出す場合は、 parseInt(numString, 10) の形式で記述し、かならず数値を10進数変換すると明記しなくてはなりません。 同等に「0x」がついていた場合は16進数変換されるので、同様に10進数で代入するためには parseInt(numString, 10)といった記述が必要です。

ページの最上段へ移動します