| 212 | |
| 213 | === 型を調べる === |
| 214 | |
| 215 | ある変数に代入されている値がどの型なのかに応じて、処理を振り分けたい場合があります。そのようなときには、値の型を調べる必要があります。型を調べるには、 '''typeof 演算子'''を利用します。 |
| 216 | |
| 217 | {{{ |
| 218 | var type = typeof x; // 変数 x に代入されている値の型を調べる |
| 219 | }}} |
| 220 | |
| 221 | ここで、上記の変数 type に代入される値は、以下のいずれかの文字列です。 |
| 222 | |
| 223 | * "number" ... 数値 |
| 224 | * "string" ... 文字列 |
| 225 | * "boolean" ... 真偽値 |
| 226 | * "undefined" ... 未定義値 |
| 227 | * "function" ... 関数 |
| 228 | * "object" ... オブジェクト |
| 229 | |
| 230 | === null という値 === |
| 231 | |
| 232 | ところで、 !JavaScript には、 '''null''' という名前の値が存在します。他の言語を既に習得されている方にとっては非常に馴染みのある単語かと思われますが、 !JavaScript においても、未定義値である undefined と非常によく似た性質を持つ値で、オブジェクトを返す関数が、オブジェクトを返せないことを表すために、代わりに返す値としてよく使われます。 |
| 233 | |
| 234 | null は undefined と似ているので、等価演算子で比較すると、真を返します。しかし、厳密には違う値なので、厳密等価演算子で比較すると、偽を返します。 |
| 235 | |
| 236 | {{{ |
| 237 | // この if-else 文は "null == undefined is TRUE!!" を表示 |
| 238 | if (null == undefined) |
| 239 | alert("null == undefined is TRUE!!"); |
| 240 | else |
| 241 | alert("null == undefined is FALSE!!"); |
| 242 | |
| 243 | // この if-else 文は "null === undefined is FALSE!!" を表示 |
| 244 | if (null === undefined) |
| 245 | alert("null === undefined is TRUE!!"); |
| 246 | else |
| 247 | alert("null === undefined is FALSE!!"); |
| 248 | }}} |
| 249 | |
| 250 | また、 null は undefined によく似ていますが、これでも立派なオブジェクト型の値です。 |
| 251 | |
| 252 | {{{ |
| 253 | var a = typeof null; // "object" |
| 254 | }}} |
| 255 | |
| 256 | ただ、オブジェクト型であるにも関わらず、 undefined との近似性を表したいのか、メンバに値を代入しようとしたりすると、エラーになります (例外を送出する)。 |
| 257 | |
| 258 | {{{ |
| 259 | null.hoge = "fuga"; // エラー! |
| 260 | var b = null.toString(); // これもエラー!! |
| 261 | }}} |