Changes between Version 8 and Version 9 of HowTo/JavaScriptLanguageIntroduction/ValueAndVariable


Ignore:
Timestamp:
Aug 23, 2010, 3:56:12 PM (14 years ago)
Author:
村山 俊之
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • HowTo/JavaScriptLanguageIntroduction/ValueAndVariable

    v8 v9  
    368368var ★重要★ = true;                // NG!! Unicode 的に見ても "★" はアルファベットではない
    369369}}}
     370
     371=== 変数への代入 ===
     372
     373変数に値を代入するには、イコール演算子 "=" を使用します。左辺に変数を、右辺に代入する値を記述します。
     374
     375{{{
     376a = 1 + 2;  // 変数 a に 1 + 2 の演算結果を代入
     377}}}
     378
     379変数への値の代入は、変数の宣言時に行うこともできます。宣言時に代入を行うことを、特に変数の'''初期化'''などと呼んだりします。
     380
     381{{{
     382var 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{{{
     394var a = 32;
     395a = "Toshiyuki Murayama";   // a に元々何が入っていようと、後から何でも代入できる。例え型が異なろうとも。
     396}}}
     397
     398このような言語の場合、ある特定の型の値が入っていることを想定して処理を行わなければならないようなケースでも、変数にどういった型の値が入ってくるかが予測できない、というようなことが起こり得ます。そのような場合には、変数に格納されている値の型を、typeof 演算子を用いて事前に調べる必要があるでしょう。
     399
     400{{{
     401// 未定義値または null の場合は何もせずに未定義値を返す
     402if (elem == undefined)
     403    return undefined;
     404// 型が文字列、数値、真偽値であれば、DOM のテキストノードに変換する。
     405if (typeof elem == "string" || typeof elem == "number" || typeof elem == "boolean")
     406    elem = document.createTextNode(elem);
     407// Date オブジェクトもロケールの文字列を DOM のテキストノードに変換する。
     408else if (elem instanceof Date)
     409    elem = document.createTextNode(elem.toLocaleString());
     410// それ以外で DOM ノードじゃない場合、とりあえず toString() を信じてみる。
     411else if (!(elem instanceof Node))
     412    elem = document.createTextNode(elem.toString());
     413}}}
     414
     415上記の例では instanceof 演算子が用いられていますが、こちらはオブジェクト型の値について、さらに詳しく種類を調べる為のものです。詳しくは[wiki:HowTo/JavaScriptLanguageIntroductoin/PrototypeAndOOP プロトタイプとオブジェクト指向]の章を参照してください。
     416