# ステートメントとブロック

TJS2 の大きな文法の構成要素としてステートメントとブロックがあります。

# ステートメント

ステートメントは、; (セミコロン) で終わるものです。式の後ろにそのままセミコロンがついたものもあれば、if 等の制御構文の後にセミコロンが付いたものもあります。
`例:
a++;
func1();
return a+b;
などなど
`

# ブロック

ブロックは、ステートメントを { } の間に複数書き、まとめたものです。ステートメントは上から下へ実行されます。
`例:
{
a++;
b++;
}
{
var t=func1();
func2(t);
break;
}
`
ブロックの次には ; (セミコロン) は必要ありません。
また、すべてのブロックは、変数のスコープを生成します。

# 実行順序

TJS では、関数、クラス、プロパティ以外の部分に書かれたステートメントは、スクリプトが実行されるとともに実行されます。関数、クラス、プロパティの中のステートメントは呼び出されるまで実行されません。
`例:
var a; // すぐに実行される
function test()
{
a+=10; // 呼び出されるまで実行されない
}
a+=30; // すぐに実行される
`
より正確には、クラスの定義、関数の定義、プロパティの定義はスクリプトが実行されるとまず一番最初に登録され、そのあと、それ以外のスクリプトの要素が先頭から実行されます。そのため、関数、クラス、プロパティは、同じスクリプトブロック内では後方参照が可能です。
`例:
test(); // この位置よりも後ろに宣言された関数でも、同じスクリプトブロック内ならば参照される
function test()
{
inform("yah!");
}
`
違うスクリプトブロック間での関数などの呼び出しは、関数呼び出しをしようとした時点で、その対象の関数が読み込まれた状態になっていれば可能です。
また、変数の宣言は、読み込まれた順番に処理されていくので、後方参照はできません。

# グローバルオブジェクト

グローバルオブジェクトは特殊なオブジェクトで、グローバルな位置(広域位置)で宣言された変数や関数、プロパティなどをメンバとして持つオブジェクトです。global キーワードでアクセスできます。