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

118 lines
6.6 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 variable.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="id431" name="id431">変数</a>
</h1><div class="para"><div>
 TJS2 の変数は <a id="id432" name="id432" class="targanchor"><dfn>var</dfn></a> キーワードで指定します。TJS2 では変数を宣言しなければ使うことができません。<br />
 var キーワードの書式は以下の通りです。<br />
<br />
<code class="bq"> var&nbsp;変数名;<br />
</code>
<br />
 変数名は <a id="id433" name="id433" class="targanchor"><dfn>,</dfn></a> (カンマ)で区切って複数個指定することもできます。変数に初期値が必要な場合は、<br />
<br />
<code class="bq"> var&nbsp;変数名&nbsp;=&nbsp;初期値;<br />
</code>
<br />
 の書式で変数に初期値を代入することができます。<br />
<br />
<code class="bq"><span class="weak">例:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;variable=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;var2=variable+2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;var3=&quot;this&nbsp;is&nbsp;var3.&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;var1,var2,var3;<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;a=0,b=1,c=3;<br />
</code>
<br />
<br />
 変数は宣言時に型を指定する必要はありません。代入されたものの型になります。また、計算途中や文脈では、自動的に型が変換されます。<br />
</div></div>
<h1><a id="id434" name="id434">変数名</a>
</h1><div class="para"><div>
 変数名として有効なのはすべての識別子です。<br />
<br />
<code class="bq"><span class="weak">例:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ampan;<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;123a;&nbsp;&nbsp;<span class="comment">//&nbsp;数字が先頭にきているので&nbsp;NG</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;function;&nbsp;<span class="comment">//&nbsp;function&nbsp;は予約語なので&nbsp;NG</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;function1;&nbsp;<span class="comment">//&nbsp;予約語を含むが予約語そのものではないので&nbsp;OK</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;変数その一;&nbsp;<span class="comment">//&nbsp;いわゆる全角文字も使用可能</span><br />
</code>
<br />
</div></div>
<h1><a id="id435" name="id435">変数の2重宣言</a>
</h1><div class="para"><div>
 同じ名前の変数を二回以上宣言してもエラーになりません。ただし、二回目以降の宣言で初期値が指定された場合、その初期値が変数に代入されます。2回目以降の宣言で初期値が与えられなかった場合は、void になります。<br />
<br />
<code class="bq"><span class="weak">例:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;a=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;a;&nbsp;<span class="comment">//&nbsp;二回目の宣言&nbsp;(エラーにならなく、a&nbsp;&nbsp;void&nbsp;になる)</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;a=-1;&nbsp;<span class="comment">//&nbsp;三回目の宣言&nbsp;(エラーにならないが&nbsp;a&nbsp;には&nbsp;-1&nbsp;が代入される)</span><br />
</code>
<br />
</div></div>
<h1><a id="id436" name="id436">変数のスコープ</a>
</h1><div class="para"><div>
 { } (ブロック) で囲まれた部分で宣言された変数は、そのブロック内のみで有効な変数、つまり<a id="id437" name="id437" class="targanchor"><dfn>ローカル変数</dfn></a>になります。<br />
 また、C 言語と異なり、変数が宣言できる位置に制限はありません。<br />
<br />
<code class="bq"><span class="weak">例:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;while(t--)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ratio=t/all;&nbsp;<span class="comment">//&nbsp;変数&nbsp;'ratio'&nbsp;を宣言</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setRatio(ratio);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;ここに制御が移ったとき、'ratio'&nbsp;は削除されている</span><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;test;&nbsp;<span class="comment">//&nbsp;ここでも変数を宣言することができる</span><br />
</code>
<br />
<br />
 また、ブロック外の変数と同じ名前の変数がブロック内で宣言された場合、そのブロック内では、新しく宣言された変数のみにアクセスできます。<br />
<br />
<code class="bq"><span class="weak">例:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ratio=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(flag)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ratio;&nbsp;<span class="comment">//&nbsp;ブロック外で宣言されている変数と同名の変数</span><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ratio=buf.position&nbsp;/&nbsp;buf.totalTime;&nbsp;<span class="comment">//&nbsp;ブロック内の&nbsp;ratio&nbsp;にのみアクセスできる</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setRatio(ratio);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;ブロックを抜けるとブロック内の&nbsp;ratio&nbsp;は削除されるが、ブロック外の&nbsp;ratio&nbsp;はそのまま</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;ratio=-1;<br />
</code>
<br />
<br /><div class="note"><div class="notehead"><span class="noteheadspan">Note</span></div>
 すべてのスコープの外側 (これをグローバルスコープと呼びます) で var で変数を宣言すると、その変数はグローバルオブジェクトのメンバとなります。<br />
</div><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>