グローバル変数とローカル変数

|
(section01-03 フレームアクションのメソッド定義と関数定義から抜粋)

 同一のタイムライン内では同名の変数は1個しか宣言することが許されません。つまり、たとえ異なるキーフレームのフレームアクションでも変数名が同じならばそれは同じ変数であり同じ値が入っています。これをグローバル変数と呼びます。
 ところが、メソッドや関数を定義するfunctionブロックの内側で変数を宣言したとき、その変数は個別のfunctionブロックの中だけで利用できる変数になります。これをローカル変数と呼びます。
 functionブロックの中と外で同名の変数が定義してあるとき、functionブロックの外の変数はグローバル変数になり、functionの中で宣言した変数はローカル変数になります。もちろん名前の重複エラーになることもありません。
 次の例では変数aをfunctionの外で宣言しています。この場合、test1()、test2()のfunction内も含めて同一タイムラインにおいて変数aは共通のグローバル変数になります。

note
ムービークリップのタイムラインで定義してあるグローバル変数の値は、ムービークリップのインスタンスごとに保存されます。

[:script:]functionブロックの外で宣言するグローバル変数a
//変数aの宣言
var a:int=100;

function test1():void{
	//変数aに1加算する
	a += 1;
	trace(a);
}

function test2():void{
	//変数aを2倍する
	a *= 2;
	trace(a);
}

//テスト
test1(); //出力:101
test2(); //出力:202
trace(a); //出力:202
 一方、次の例では変数aをfunctionブロックの外だけでなく、test1()のfunctionブロックの中でも宣言して使っています。このとき、続くテストの結果を見るとわかるように、test2()で参照している変数aはブロックの外で宣言している変数aと同じ変数ですが、test1()の中で宣言してある変数aは名前が同じでもtest1()の中だけの変数、すなわちローカル変数であることがわかります。

[:script:]test1()ではローカル変数aを宣言して使う
//変数aの宣言
var a:int=100;

function test1():void{
	//ローカル変数aの宣言
	var a:int=5;
	//ローカル変数aに1加算する
	a += 1;
	trace(a);
}

function test2():void{
	//変数aを2倍する
	a *= 2;
	trace(a);
}

//テスト
test1(); //出力:6
test2(); //出力:200
trace(a); //出力:200
まったく新しいAS3の世界!
694a.jpg
Adobe Flash CS4
詳細!ActionScript3.0入門ノート[完全改訂版](CD-ROM付)

楽しいActionScript。
新たなる1歩へと踏み出しましょう。
■内容は?→ 目次を見る
■評判は?→ 書評を読む
この本を書いたわけ

このブログ記事について

このページは、oshigeが2009年8月22日 12:05に書いたブログ記事です。

ひとつ前のブログ記事は「関数定義 function return」です。

次のブログ記事は「関数式(匿名関数を定義する)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

あわせて読みたいブログパーツ