S-JIS[2004-01-10/2006-07-03] 変更履歴

変数

JavaScriptで使用できる変数について。


定義方法


スコープ

変数のスコープは、ローカルとグローバルの2種類しかないようだ。(ローカルスコープのネストが出来ない)

function putTest(msg){
        var z1='<', z2='>';      //ブロックの外の変数宣言では不等号の括弧
        if(true){
                var z1,z2;       //ブロック内の変数宣言では丸括弧
                z1='('; z2=')';
        }
        confirm(z1 + msg + z2);
}

ブロック内で同じ変数名を宣言しても、ブロック内のみの独立した変数にはならない。(エラーにもならないけど)

for文の中で変数宣言をすることも出来る。これは、ローカル変数と同じ扱いになる。

function test(){
    for(var i=0; i<2; i++){
        confirm(i);
    }
}

配列の使い方


連想配列(マップ)

JavaScriptでは、連想配列(マップ)が使える。[2006-07-02]

	var map = new Object();
	map["hoge"] = "zzz";
	map["hage"] = "余計なお世話";
	var map = { hoge:"zzz", hage:"余計なお世話" }		…連想配列の初期化構文。応用するとちょっとしたクラスもどきが作れる
	confirm(map["hage"]);
	confirm(map.hage);				…オブジェクトに対するメンバー(フィールド)も、連想配列で実装されている
	var str = "";
	for(var i in map){				…マップ内の全ての要素に対してループ
		str += i + ":" + map[i] + "\n";
	}
	confirm(str);
	delete map["hage"];	//削除!排除!抹消!

JavaScriptの配列は、連想配列(マップ)としてObjectに実装されている。
つまり、Arrayを使わなくても使える。(ただし配列の個数が扱えるなど、Arrayの方が便利)

	var arr = new Object();
	for(var i=0; i<10; i++){
		arr[i] = i + 1;
	}
	confirm(arr[3]);
	confirm(arr["3"]);
	//confirm(arr["03"];	…キー03は定義されていないからエラー
	//confirm(arr.3);		…さすがに数字では無理

変数名を動的に変更

eval()という関数は、文字列をJavaScriptの式として実行する。[2004-06-11]
これを利用すると、変数名を動的に変えたように扱うことが出来る。

function putFruitColor(fruit){
    var colorApple ="赤";
    var colorBanana="黄";
    var colorOrange="橙";

    if(fruit=="") return;
    var col=eval("color" + fruit);
    alert(col);
}
選ぶと色を表示する:

JavaScriptへ戻る / 技術メモへ戻る
メールの送信先:ひしだま