| 370 | |
| 371 | === 変数への代入 === |
| 372 | |
| 373 | 変数に値を代入するには、イコール演算子 "=" を使用します。左辺に変数を、右辺に代入する値を記述します。 |
| 374 | |
| 375 | {{{ |
| 376 | a = 1 + 2; // 変数 a に 1 + 2 の演算結果を代入 |
| 377 | }}} |
| 378 | |
| 379 | 変数への値の代入は、変数の宣言時に行うこともできます。宣言時に代入を行うことを、特に変数の'''初期化'''などと呼んだりします。 |
| 380 | |
| 381 | {{{ |
| 382 | var a = 1 + 2; // 変数 a を 1 + 2 の演算結果で初期化する |
| 383 | }}} |
| 384 | |
| 385 | 実は、代入を行う演算子は単なるイコールだけではないのですが、その辺の説明は、[wiki:HowTo/JavaScriptLanguageIntroduction/Calculate さまざまな演算]の章に譲ることにします。 |
| 386 | |
| 387 | === 変数の型 === |
| 388 | |
| 389 | 変数自体が型を持つか否かは、プログラム言語のポリシーに応じて別れるところです。特に、コンパイルを行うことを意識した言語 (C/C++, Java, C#, Pascal/Delphi など) や、事務処理に特化した言語 (COBOL, BASIC など) が変数に型を持たせているのとは対照的に、手軽さを重視したスクリプト言語の類 (Perl, Python, PHP, Ruby など) では変数に型を持たせないのが一般的です。 |
| 390 | |
| 391 | !JavaScript もこの例に漏れず、スクリプト言語ですので、変数に型はありません。なので、例えば数値で初期化した変数に、後から文字列を代入することもできてしまいます。 |
| 392 | |
| 393 | {{{ |
| 394 | var a = 32; |
| 395 | a = "Toshiyuki Murayama"; // a に元々何が入っていようと、後から何でも代入できる。例え型が異なろうとも。 |
| 396 | }}} |
| 397 | |
| 398 | このような言語の場合、ある特定の型の値が入っていることを想定して処理を行わなければならないようなケースでも、変数にどういった型の値が入ってくるかが予測できない、というようなことが起こり得ます。そのような場合には、変数に格納されている値の型を、typeof 演算子を用いて事前に調べる必要があるでしょう。 |
| 399 | |
| 400 | {{{ |
| 401 | // 未定義値または null の場合は何もせずに未定義値を返す |
| 402 | if (elem == undefined) |
| 403 | return undefined; |
| 404 | // 型が文字列、数値、真偽値であれば、DOM のテキストノードに変換する。 |
| 405 | if (typeof elem == "string" || typeof elem == "number" || typeof elem == "boolean") |
| 406 | elem = document.createTextNode(elem); |
| 407 | // Date オブジェクトもロケールの文字列を DOM のテキストノードに変換する。 |
| 408 | else if (elem instanceof Date) |
| 409 | elem = document.createTextNode(elem.toLocaleString()); |
| 410 | // それ以外で DOM ノードじゃない場合、とりあえず toString() を信じてみる。 |
| 411 | else if (!(elem instanceof Node)) |
| 412 | elem = document.createTextNode(elem.toString()); |
| 413 | }}} |
| 414 | |
| 415 | 上記の例では instanceof 演算子が用いられていますが、こちらはオブジェクト型の値について、さらに詳しく種類を調べる為のものです。詳しくは[wiki:HowTo/JavaScriptLanguageIntroductoin/PrototypeAndOOP プロトタイプとオブジェクト指向]の章を参照してください。 |
| 416 | |