変数の注意点

説明

IchigoLatteの変数は32ビットです。IchigoJamは16ビットなのでビット数にすると2倍です。10進数値で比較するとIchigoJamは-32768〜32767まで、IchigoLatteでは-2147483648〜2147483647までの範囲の値を扱うことができます。
また、変数を使用する場合、必ずvarを使って宣言する必要があります。一般的なJavaScriptの場合、varなしでいきなり変数を使うことができますが、IchigoLatteではそのようなことはできません。
var num=0x7fffFFFF;
log(num,"\n");
IchigoJamではA〜Zまでの1文字ですが、IchigoLatteの変数名の長さは最大7文字までです。8文字以上の変数名を指定するとエラーになります。また、IchigoJamと違い変数が何個使えるかは空き領域(メモリ)に依存します。
IchigoJamの変数はプログラム中のどこでも使えるグローバル変数ですが、IchigoLatteにはグローバル変数とローカル変数の2種類があります。IchigoLatteではトップレベルで宣言された場合グローバル変数になり、関数内で定義された変数はすべてローカル変数になります。ローカル変数は、その関数内でのみ使うことができます。関数外から参照することはできません。
以下の例では関数外で変数abは参照できないので「log("ab2:",ab,"\n");」の行でエラーになります。また、関数に渡された値を受け取る変数もローカル変数となります。
var gb=123;
function test(){
 log("Global:",gb,"\n");
 var ab=456;
 log("ab:",ab,"\n");
}
test();
log("Global2:",gb,"\n");
log("ab2:",ab,"\n");
もう1つ注意しなければならないのが変数のスコープ範囲です。以下の様なコード(ブラウザで試す場合は「var a=12;{var a=34;console.log(a);}console.log(a);」になります)をIchigoLatteで実行すると一般的なJavaScriptの結果と異なったものになります。一般的なJavaScriptでは34、34と表示されますが、IchigoLatteでは34、12となります。
var a=12;
{
  var a=34;
  log(a,"\n");
}
log(a,"\n");
これはIchigoLatteでは{ }で囲まれたブロック内でvarを使って変数を宣言すると、ブロック内でのみ有効になるためです。一般的なJavaScriptで同じことを行うにはvarでなくletが該当します。つまり、IchigoLatteのvarは一般的なJavaScriptのletになります。(ブラウザで試す場合は「let a=12;{let a=34;console.log(a);}console.log(a);」になります)

目次に戻る