検証:値未代入の宣言済み変数の扱いについて
以下のような、本日の授業で問題になっていた値未初期化(未代入)の宣言済み変数を用いて、その変数自身(の値)に何かしらの計算を行った結果を、その同じ変数に代入する場合、
var sum; //値が未初期化(未代入)の変数 var a = 5; //値が初期化(代入)済みの変数 sum = sum + 2; document.write(sum);
⇒表示結果は「NaN」。1行目の「var sum;」をコメントアウトするとエラー(何も表示されない)。
また、値未初期化の変数の中身を確認してみると
var sum; document.write(sum);
⇒表示結果は「undefined」。注)「undefined」は文字列にあらず
ということは、値が「undefined」のものに何かしらの計算を行っても結果は「NaN」となり、望ましい計算結果は得られないらしい。
ちなみに下記のように値未初期化変数(sum)と数値(2)との計算結果を値初期化済み変数(alt)に代入しようとした場合も結果は同じ「NaN」↓
var sum; var alt = 0; alt = sum + 2; document.write(alt);
要は代入の「=」の右側での計算に用いられる変数(上記の場合はsum)の値(未初期化なら初期化すること)が重要ということらしい。
上記コードの場合は、「sum」に初期値を代入しておけば「alt」に初期値を代入しておく必要はない↓
var sum = 1; var alt; alt = sum + 2; document.write(alt);
⇒表示結果は「3」。
※「null」について
「null」は計算においては「0(ゼロ)」と同じ扱いになるらしい。
var value = null; var sum; sum = value + 1; document.write(sum);
⇒表示結果は「1」となり、実質「0+1」の扱い。実際に検証済み。
情報源は下記リンク先
http://blog.asial.co.jp/1092