CRSプログラミング

Q6 12
変数定義方法による差異について

A6 12
[解決方法]
変数の定義方法として、ObjectTypeを指定する方法とvar変数で定義する方法が
あります。

例えば、Function内でカウンタ変数を定義する場合、
  Number cnt = 0; ・・・【1】

または

   var cnt = 0; ・・・【2】
で定義することが出来ます。

上記の定義は以下の点で異なります。


【1】 Number cnt = 0; とした場合

cnt は変数定義を実行したオブジェクトを親オブジェクトとした「オブジェクトツリー」に
接続され、cnt というオブジェクトが生成されます。

よって、Function内の処理が終了した後も、異なる処理(異なるスコープ)から
<親オブジェクト>.cnt と参照することが可能です。

また、オブジェクトツリーに接続されたオブジェクトは、Function内での用途が終わって
スコープを抜けても、明示的に削除した場合や親オブジェクトが削除されるまで、
メモリ上に保持されます。


【2】 var cnt = 0; とした場合

定数オブジェクトのリファレンスが cntという名前のvar変数に格納されます。
var変数はオブジェクトツリーに接続されることはなく、変数への参照もFunction内でのみ
有効となります。
また、定数オブジェクトはFunctionの処理(スコープ)から抜けたタイミングで自動的に
削除されます。



上記のように、定義方法によってそれぞれ長所・短所があります。
【1】の書式で定義した場合などは、複数のスコープから参照ができ、便利ですが、
値の変更も可能なため、処理中で前提となる値でなくなってしまう可能性も含まれます。
また、メモリ上に保持されたままとなるとリソースの消費にもつながります。

【参考情報】
   Biz/Browserのリソース管理


変数の用途に合わせて定義方法を選択してください。

管理番号:CRSM_012
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser Mobile・Biz/Designer Mobile TIPS集 トップへ