不思議の国のJavaScript2
《 初回公開:だいぶ昔で覚えていない , 最終更新:未 》
「不思議の国のJavaScript-オブジェクト指向に関するtips」では、 オブジェクト指向に関する奇妙なふるまいについて述べたが、 その他にも不審な挙動を見かける。
undefinedとnull
undefinedは文字どおり未定義の値であり,nullは値が無い事を示す。
undefinedとnullとは一見、同じようだが微妙に異なる。
値の論理値として評価
undefinedもnullも、論理値として評価される時はfalseとして評価される。
ちなみに、数値の0はfalse,0以外はtrue、 文字列の場合は空文字はfalse,空文字は以外はtrueとなる。
undefinedとnullを==演算子で比較すると、trueと判断される。
を厳密に区別したい場合は、===演算子で比較する。
この様子を以下に示す。
変数の宣言とスコープ
変数の宣言には、varキーワードを使う。
varキーワードで変数を宣言せずに、変数にいきなり値を代入した場合でも、変数宣言されたものとみなされる。
つまり、代入時のvarキーワードは省略できる。
ただし、varキーワードを省略した場合は、グルーバル変数なる。
グルーバル変数は、windowオブジェクトのプロパティでもある。
宣言もされず,代入もされていない変数を、いきなり使う事はできない。
変数宣言は宣言前のコンテキスト内の変数に対しても有効。(宣言前に変数を使用してもエラーにならない。)
リスト7のプログラムに対して、次のように使用後に変数宣言を追加すると、エラーが発生しなくなる。
同じ変数を複数回宣言しても、エラーとはならない。
関数内でvar宣言した変数は、ローカル変数となる。
変数には、ローカル変数,グローバル変数の他にも、いろいろある。
「変数のいろいろ」を参照。