検証:値未代入の宣言済み変数の扱いについて

以下のような、本日の授業で問題になっていた値未初期化(未代入)の宣言済み変数を用いて、その変数自身(の値)に何かしらの計算を行った結果を、その同じ変数に代入する場合、

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

参照
http://www.crystal-creation.com/web-appli/technical-information/programming/javascript/grammar/variable/