Files
krkr2doc/docs/tjs2doc/contents/statement_and_block.html
2016-09-08 17:50:19 +09:00

98 lines
5.5 KiB
HTML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<!-- generated by to_html.pl from statement_and_block.xml -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>ステートメントとブロック</title>
<meta name="author" content="W.Dee" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link href="browser.css" type="text/css" rel="stylesheet" title="吉里吉里関連リファレンス用標準スタイル" />
<link href="mailto:[email protected]" rev="Made" />
<link href="index.html" target="_top" rel="Start" title="トップページ" />
</head>
<body>
<h1><a id="id323" name="id323">ステートメントとブロック</a>
</h1><div class="para"><div>
 TJS2 の大きな文法の構成要素としてステートメントとブロックがあります。<br />
</div></div>
<h1><a id="id324" name="id324">ステートメント</a>
</h1><div class="para"><div>
 ステートメントは、<a id="id325" name="id325" class="targanchor"><dfn>;</dfn></a> (セミコロン) で終わるものです。式の後ろにそのままセミコロンがついたものもあれば、if 等の制御構文の後にセミコロンが付いたものもあります。<br />
<br />
<code class="bq"><span class="weak">例:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;a++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;func1();<br />
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;a+b;<br />
&nbsp;&nbsp;&nbsp;&nbsp;などなど<br />
</code>
<br />
</div></div>
<h1><a id="id326" name="id326">ブロック</a>
</h1><div class="para"><div>
 ブロックは、ステートメントを <a id="id327" name="id327" class="targanchor"><dfn>{ }</dfn></a> の間に複数書き、まとめたものです。ステートメントは上から下へ実行されます。<br />
<br />
<code class="bq"><span class="weak">例:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;t=func1();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;func2(t);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</code>
<br />
<br />
 ブロックの次には ; (セミコロン) は必要ありません。<br />
<br />
 また、すべてのブロックは、変数の<a id="id328" name="id328" class="targanchor"><dfn>スコープ</dfn></a>を生成します。<br />
</div></div>
<h1><a id="id329" name="id329">実行順序</a>
</h1><div class="para"><div>
 TJS では、関数、クラス、プロパティ以外の部分に書かれたステートメントは、スクリプトが実行されるとともに実行されます。関数、クラス、プロパティの中のステートメントは呼び出されるまで実行されません。<br />
<br />
<code class="bq"><span class="weak">例:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;a;&nbsp;<span class="comment">//&nbsp;すぐに実行される</span><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;test()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a+=10;&nbsp;<span class="comment">//&nbsp;呼び出されるまで実行されない</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;a+=30;&nbsp;<span class="comment">//&nbsp;すぐに実行される</span><br />
</code>
<br />
<br />
 より正確には、クラスの定義、関数の定義、プロパティの定義はスクリプトが実行されるとまず一番最初に登録され、そのあと、それ以外のスクリプトの要素が先頭から実行されます。そのため、関数、クラス、プロパティは、同じスクリプトブロック内では後方参照が可能です。<br />
<br />
<code class="bq"><span class="weak">例:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;test();&nbsp;<span class="comment">//&nbsp;この位置よりも後ろに宣言された関数でも、同じスクリプトブロック内ならば参照される</span><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;test()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inform(&quot;yah!&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</code>
<br />
<br />
 違うスクリプトブロック間での関数などの呼び出しは、関数呼び出しをしようとした時点で、その対象の関数が読み込まれた状態になっていれば可能です。<br />
 また、変数の宣言は、読み込まれた順番に処理されていくので、後方参照はできません。<br />
</div></div>
<h1><a id="id330" name="id330">グローバルオブジェクト</a>
</h1><div class="para"><div>
 グローバルオブジェクトは特殊なオブジェクトで、グローバルな位置(広域位置)で宣言された変数や関数、プロパティなどをメンバとして持つオブジェクトです。global キーワードでアクセスできます。<br />
</div></div>
<script type="text/javascript" charset="UTF-8" src="documentid.js" ></script>
<script type="text/javascript" charset="UTF-8" src="postcontent.js" ></script>
</body>
</html>