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

255 lines
31 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 expr_and_op.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="id88" name="id88">式と演算子</a>
</h1><div class="para"><div>
 <a id="id89" name="id89" class="targanchor"><dfn></dfn></a>は、演算子とオペランドの集まり、あるいは即値です。<br />
<br />
 通常、スクリプト中に以下のように記述することができます。<br />
<br />
<code class="inlinecode">&nbsp;&nbsp;&nbsp;&nbsp;式;<br />
</code><br />
 このように式の後にセミコロンをつけると、その式がその場で評価( = 実行 )され、その式としての結果は捨てられます。<br />
<br />
<br />
<code class="bq"><span class="weak">例:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;b;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;演算子&nbsp;=&nbsp;の動作によって、a&nbsp;変数に&nbsp;変数b&nbsp;が代入される</span><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;func();<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;演算子&nbsp;(&nbsp;)&nbsp;の動作によって、func&nbsp;が関数として呼び出されるが、関数の戻り値</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;は捨てられる</span><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;+&nbsp;3;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;+&nbsp;演算子の動作によって、1&nbsp;&nbsp;3&nbsp;が加算されるが、結果は捨てられる(実際はこ</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;の式は意味を持たないので実行すらされない)</span><br />
</code>
<br />
</div></div>
<h1><a id="id90" name="id90">真と偽</a>
</h1><div class="para"><div>
 いくつかの演算子は、真か偽 (論理値) を扱います。演算の結果が 0 の場合は偽、0 以外の場合は 真になります。<br />
 文字列に対して真偽が問われた場合は、空文字列の場合は偽、それ以外の場合は数値に変換しようとして成功すれば、その数値としての結果が真偽になり、失敗すれば偽になります。<br />
</div></div>
<h1><a id="id91" name="id91">演算子</a>
</h1><div class="para"><div>
 以下、演算子を優先順位の低いものから順に説明していきます。<br />
</div></div>
<h1><a id="id92" name="id92">if 演算子</a>
</h1><div class="para"><div>
 if 演算子 <code class="inlinecode">if</code> は、右側にあるものを評価した結果が真の場合のみに、左側にあるものを評価する演算子です。<br />
<br />
<code class="bq"><span class="weak">例:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;a=b&nbsp;if&nbsp;b!=0;&nbsp;<span class="comment">//&nbsp;b&nbsp;&nbsp;0&nbsp;でなければ&nbsp;a&nbsp;&nbsp;b&nbsp;を代入</span><br />
</code>
<br />
<br />
 演算子の結果を得ることはできません。<br />
</div></div>
<h1><a id="id93" name="id93">順次演算子</a>
</h1><div class="para"><div>
 順次演算子 <code class="inlinecode"><a id="id94" name="id94" class="targanchor"><dfn>,</dfn></a></code> (カンマ) は、左にあるものを評価して、つぎに右側にあるものを評価します。それ以外の事は行いません。演算子全体としては、右側にあるものを評価した結果になります。カンマが続けて複数書かれた場合は、左側にあるものから順に評価されます。<br />
<br />
<code class="bq"><span class="weak">例:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;=&nbsp;(a=1,&nbsp;b=2);&nbsp;<span class="comment">//&nbsp;a=1,&nbsp;b=2&nbsp;が評価され、c&nbsp;には&nbsp;2&nbsp;が代入される</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;a=1,&nbsp;b=2,&nbsp;c=3;&nbsp;<span class="comment">//&nbsp;a=1,&nbsp;b=2,&nbsp;c=3&nbsp;の順に評価される</span><br />
</code>
<br />
</div></div>
<h1><a id="id95" name="id95">代入演算子</a>
</h1><div class="para"><div>
 代入演算子には以下のものがあります。<br />
<br />
<code class="inlinecode"><a id="id96" name="id96" class="targanchor"><dfn>=</dfn></a> <a id="id97" name="id97" class="targanchor"><dfn>&lt;-&gt;</dfn></a> <a id="id98" name="id98" class="targanchor"><dfn>&amp;=</dfn></a> <a id="id99" name="id99" class="targanchor"><dfn>|=</dfn></a> <a id="id100" name="id100" class="targanchor"><dfn>^=</dfn></a> <a id="id101" name="id101" class="targanchor"><dfn>-=</dfn></a> <a id="id102" name="id102" class="targanchor"><dfn>+=</dfn></a> <a id="id103" name="id103" class="targanchor"><dfn>%=</dfn></a> <a id="id104" name="id104" class="targanchor"><dfn>/=</dfn></a> <a id="id105" name="id105" class="targanchor"><dfn>\=</dfn></a> <a id="id106" name="id106" class="targanchor"><dfn>*=</dfn></a> <a id="id107" name="id107" class="targanchor"><dfn>||=</dfn></a> <a id="id108" name="id108" class="targanchor"><dfn>&amp;&amp;=</dfn></a> <a id="id109" name="id109" class="targanchor"><dfn>&gt;&gt;=</dfn></a> <a id="id110" name="id110" class="targanchor"><dfn>&lt;&lt;=</dfn></a> <a id="id111" name="id111" class="targanchor"><dfn>&gt;&gt;&gt;=</dfn></a></code><br />
 このうち、 = 演算子は単純代入演算子で、右側のものを評価した結果を左側のものに代入するという動作をし、演算子全体の値としては右側にあるものを評価した結果となります。<br />
<br />
<code class="bq"><span class="weak">例:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;0;&nbsp;&nbsp;<span class="comment">//&nbsp;a&nbsp;&nbsp;0&nbsp;を代入</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;b&nbsp;=&nbsp;c&nbsp;=&nbsp;0;&nbsp;<span class="comment">//&nbsp;c&nbsp;,&nbsp;b,&nbsp;a&nbsp;の順に&nbsp;0&nbsp;を代入</span><br />
</code>
<br />
<br />
 <code class="inlinecode">&lt;-&gt;</code> 演算子はいれかえを行います。まず、左側のものを評価し、次に右側のものを評価します。そのあと、右側を評価した結果を左側に代入し、左側を評価した結果を右側に代入します。演算子の結果を得ることはできません。<br />
 現時点では左右の式はそれぞれ、式の値を得るためと式に代入するために<em>2回評価されます</em>。将来的にこの仕様は変更される可能性があるので、評価回数に依存した記述をしないようにしてください。<br />
<br />
 それ以外の演算子は、すべて、<code class="inlinecode">演算子=</code> の形式をとっており、<code class="inlinecode">A 演算子= B</code> と記述された場合は、<code class="inlinecode">A = A 演算子 B</code> という意味になります。演算子全体の値としては、演算の結果の値となります。<br />
</div></div>
<h1><a id="id112" name="id112">条件演算子</a>
</h1><div class="para"><div>
 条件演算子 <code class="inlinecode"><a id="id113" name="id113" class="targanchor"><dfn>? :</dfn></a></code> は3項演算子です。<code class="inlinecode">A ? B : C</code> の形式で書くと、A を評価し、真だった場合に B を評価し、C を無視します。偽だった場合は C を評価し、B を無視します。演算子全体の値としては、B または C の評価された方の値になります。<br />
<br />
 条件演算子は左辺値として使うことができます。<br />
<br />
<code class="bq"><span class="weak">例:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;b==0&nbsp;?&nbsp;c&nbsp;:&nbsp;b;&nbsp;<span class="comment">//&nbsp;b&nbsp;&nbsp;0&nbsp;だったら&nbsp;a&nbsp;&nbsp;c&nbsp;を、&nbsp;b&nbsp;&nbsp;0&nbsp;でなかったら&nbsp;a&nbsp;&nbsp;b&nbsp;を代入</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;b==0&nbsp;?&nbsp;(a=c)&nbsp;:&nbsp;(a=b);&nbsp;<span class="comment">//&nbsp;上と同じ意味</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;(a&nbsp;?&nbsp;b&nbsp;:&nbsp;c&nbsp;)&nbsp;=&nbsp;d;&nbsp;<span class="comment">//&nbsp;a&nbsp;が真ならば&nbsp;b&nbsp;に、a&nbsp;が偽ならば&nbsp;c&nbsp;に、&nbsp;d&nbsp;を代入&nbsp;(左辺値として使用した例)</span><br />
</code>
<br />
</div></div>
<h1><a id="id114" name="id114">論理 OR 演算子</a>
</h1><div class="para"><div>
 論理 OR 演算子 <code class="inlinecode"><a id="id115" name="id115" class="targanchor"><dfn>||</dfn></a></code> は、左側にあるものをまず評価し、真ならば右側にあるものを無視して、演算子全体の結果としては真になります。左側にあるものを評価した結果が偽だった場合、右側にあるものを評価し、その真偽の結果が演算子全体の結果となります。<br />
</div></div>
<h1><a id="id116" name="id116">論理 AND 演算子</a>
</h1><div class="para"><div>
 論理 AND 演算子 <code class="inlinecode"><a id="id117" name="id117" class="targanchor"><dfn>&amp;&amp;</dfn></a></code> は、左側にあるものをまず評価し、偽ならば右側にあるものを無視して、演算子全体の結果としては偽になります。左側にあるものを評価した結果が真だった場合、右側にあるものを評価し、その結果が演算子全体の結果となります。<br />
</div></div>
<h1><a id="id118" name="id118">ビット OR 演算子</a>
</h1><div class="para"><div>
 ビット OR 演算子 <code class="inlinecode"><a id="id119" name="id119" class="targanchor"><dfn>|</dfn></a></code> は、ビットごとの論理 OR をとります。左側にあるもの、右側にあるものの順に評価し、その結果を整数として、ビットごとの OR をとったものが演算子全体の値となります。<br />
</div></div>
<h1><a id="id120" name="id120">ビット XOR 演算子</a>
</h1><div class="para"><div>
 ビット XOR 演算子 <code class="inlinecode"><a id="id121" name="id121" class="targanchor"><dfn>^</dfn></a></code> は、ビットごとの論理 XOR をとります。左側にあるもの、右側にあるものの順に評価し、その結果を整数として、ビットごとの XOR をとったものが演算子全体の値となります。<br />
</div></div>
<h1><a id="id122" name="id122">ビット AND 演算子</a>
</h1><div class="para"><div>
 ビット AND 演算子 <code class="inlinecode"><a id="id123" name="id123" class="targanchor"><dfn>&amp;</dfn></a></code> は、ビットごとの論理 AND をとります。左側にあるもの、右側にあるものの順に評価し、その結果を整数として、ビットごとの AND をとったものが演算子全体の値となります。<br />
</div></div>
<h1><a id="id124" name="id124">同定演算子</a>
</h1><div class="para"><div>
 <code class="inlinecode"><a id="id125" name="id125" class="targanchor"><dfn>==</dfn></a> <a id="id126" name="id126" class="targanchor"><dfn>!=</dfn></a> <a id="id127" name="id127" class="targanchor"><dfn>===</dfn></a> <a id="id128" name="id128" class="targanchor"><dfn>!==</dfn></a></code>は同定演算子の類です。<br />
<br />
<dl>
<dt><code class="inlinecode">==</code> 演算子</dt>
<dd><code class="inlinecode">==</code> 演算子は、左側にあるものを先に評価し、次に右側にあるものを評価します。両者が一致すれば演算子全体で真、一致しなければ演算子全体で偽になります。両辺の演算の結果、型が異なれば適切に変換されてから比較されます。たとえば、<code class="inlinecode">-1 == '-1'</code> は真になります。</dd>
<dt><code class="inlinecode">!=</code> 演算子</dt>
<dd><code class="inlinecode">!=</code> 演算子は、<code class="inlinecode">==</code> 演算子の真偽が逆になったものです。</dd>
<dt><code class="inlinecode">===</code> 演算子</dt>
<dd><code class="inlinecode">===</code> 演算子は識別比較演算子と呼ばれ、<code class="inlinecode">==</code> 演算子と同じですが、型の変換は行われず、型までもが一致しなければ真になりません。</dd>
<dt><code class="inlinecode">!==</code> 演算子</dt>
<dd><code class="inlinecode">!==</code> 演算子は、<code class="inlinecode">===</code> 演算子の真偽が逆になったものです。</dd></dl></div></div>
<h1><a id="id129" name="id129">比較演算子</a>
</h1><div class="para"><div>
 <code class="inlinecode"><a id="id130" name="id130" class="targanchor"><dfn>&lt;</dfn></a> <a id="id131" name="id131" class="targanchor"><dfn>&gt;</dfn></a> <a id="id132" name="id132" class="targanchor"><dfn>&lt;=</dfn></a> <a id="id133" name="id133" class="targanchor"><dfn>&gt;=</dfn></a></code> は比較演算子の類です。<br />
<br />
<dl>
<dt><code class="inlinecode">&lt;</code> 演算子</dt>
<dd><code class="inlinecode">&lt;</code> 演算子は、左側にあるものを先に評価し、右側にあるものを次に評価します。左側を評価した結果が右側を評価した結果よりも小さければ真になり、そうでなければ偽になります。</dd>
<dt><code class="inlinecode">&gt;</code> 演算子</dt>
<dd><code class="inlinecode">&gt;</code> 演算子は、左側にあるものを先に評価し、右側にあるものを次に評価します。右側を評価した結果が左側を評価した結果よりも小さければ真になり、そうでなければ偽になります。</dd>
<dt><code class="inlinecode">&lt;=</code> 演算子</dt>
<dd><code class="inlinecode">&lt;=</code> 演算子は、左側にあるものを先に評価し、右側にあるものを次に評価します。左側を評価した結果が右側を評価した結果よりも小さいか等しいならば真になり、そうでなければ偽になります。</dd>
<dt><code class="inlinecode">&gt;=</code> 演算子</dt>
<dd><code class="inlinecode">&gt;=</code> 演算子は、左側にあるものを先に評価し、右側にあるものを次に評価します。右側を評価した結果が左側を評価した結果よりも小さいか等しいならば真になり、そうでなければ偽になります。</dd></dl><br />
 比較するものが両方とも文字列の場合は、ワイド文字コード順(通常はUNICODE)での比較になります。<br />
</div></div>
<h1><a id="id134" name="id134">ビットシフト演算子</a>
</h1><div class="para"><div>
 <code class="inlinecode"><a id="id135" name="id135" class="targanchor"><dfn>&gt;&gt;</dfn></a> <a id="id136" name="id136" class="targanchor"><dfn>&lt;&lt;</dfn></a> <a id="id137" name="id137" class="targanchor"><dfn>&gt;&gt;&gt;</dfn></a></code>はビットシフト演算子の類です。<br />
<br />
<dl>
<dt><code class="inlinecode">&gt;&gt;</code> 演算子</dt>
<dd><code class="inlinecode">&gt;&gt;</code> 演算子は、まず左側にあるものを評価し、右側にあるものを次に評価します。左側の結果を整数として、右側の結果の回数分だけ右に符号付きビットシフトしたものが演算子全体の結果となります。</dd>
<dt><code class="inlinecode">&lt;&lt;</code> 演算子</dt>
<dd><code class="inlinecode">&lt;&lt;</code> 演算子は、まず左側にあるものを評価し、右側にあるものを次に評価します。左側の結果を整数として、右側の結果の回数分だけ左にビットシフトしたものが演算子全体の結果となります。</dd>
<dt><code class="inlinecode">&gt;&gt;&gt;</code> 演算子</dt>
<dd><code class="inlinecode">&gt;&gt;&gt;</code> 演算子は、<code class="inlinecode">&gt;&gt;</code>演算子と同じですが、左側を評価した結果を符号無し整数として扱います。</dd></dl></div></div>
<h1><a id="id138" name="id138">加減算演算子</a>
</h1><div class="para"><div>
 <code class="inlinecode"><a id="id139" name="id139" class="targanchor"><dfn>+</dfn></a> <a id="id140" name="id140" class="targanchor"><dfn>-</dfn></a></code> は、それぞれ加算演算子と減算演算子です。<br />
<br />
<dl>
<dt><code class="inlinecode">+</code> 演算子</dt>
<dd><code class="inlinecode">+</code> 演算子は、先に左側を評価し、次に右側を評価します。結果が両方とも数値だった場合は、数値としての加算が行われ、演算子全体の結果となります。どちらか、あるいは両方が文字列だった場合は、文字列としての加算が行われ、演算子全体としては 左側の結果の後ろに右側の結果を結合した文字列になります。数値は文字列に、オブジェクト型は文字列に変換できれば変換されます。</dd>
<dt><code class="inlinecode">-</code> 演算子</dt>
<dd><code class="inlinecode">-</code> 演算子は、先に左側を評価し、次に右側を評価します。その後、数値として左側の結果から右側の結果が引かれ、それが演算子全体の値となります。</dd></dl></div></div>
<h1><a id="id141" name="id141">乗除余算演算子</a>
</h1><div class="para"><div>
 <code class="inlinecode"><a id="id142" name="id142" class="targanchor"><dfn>%</dfn></a> <a id="id143" name="id143" class="targanchor"><dfn>/</dfn></a> <a id="id144" name="id144" class="targanchor"><dfn>\</dfn></a> <a id="id145" name="id145" class="targanchor"><dfn>*</dfn></a></code> は、それぞれ剰余算、除算、整数除算、乗算演算子です。<br />
<br />
<dl>
<dt><code class="inlinecode">%</code> 演算子</dt>
<dd><code class="inlinecode">%</code> 演算子は、先に左側を評価し、次に右側を評価します。そのあと、左側を右側で割った剰りが演算子全体の値になります。値は両方とも整数として扱われます。</dd>
<dt><code class="inlinecode">/</code> 演算子</dt>
<dd><code class="inlinecode">/</code> 演算子は、先に左側を評価し、次に右側を評価します。そのあと、左側を右側で割った値が演算子全体の値になります。値は実数として扱われます。</dd>
<dt><code class="inlinecode">\</code> 演算子</dt>
<dd><code class="inlinecode">\</code> 演算子は、/ 演算子のように除算を行いますが、値は整数として扱われます。</dd>
<dt><code class="inlinecode">*</code> 演算子</dt>
<dd><code class="inlinecode">*</code> 演算子は、先に左側を評価し、次に右側を評価します。そのあと、左側を右側で掛けた値が演算子全体の値になります。値は実数として扱われます。</dd></dl></div></div>
<h1><a id="id146" name="id146">一般的な単項演算子の類</a>
</h1><div class="para"><div>
 以下はすべて単項演算子です ( <code class="inlinecode">instanceof</code> は例外 )。<br />
<br />
<dl>
<dt><code class="inlinecode"><a id="id147" name="id147" class="targanchor"><dfn>!</dfn></a></code> 演算子</dt>
<dd>前置の <code class="inlinecode">!</code> 演算子は、論理否定演算子です。右側にあるものを評価したものの真偽を逆にしたものが演算子全体の値となります。</dd>
<dt><code class="inlinecode"><a id="id148" name="id148" class="targanchor"><dfn>~</dfn></a></code> 演算子</dt>
<dd><code class="inlinecode">~</code> 演算子は、ビット否定演算子です。右側にあるものを評価したものを整数とし、ビットごとの否定 ( 1→0、0→1 ) を行ったものが演算子全体の値となります。</dd>
<dt><code class="inlinecode"><a id="id149" name="id149" class="targanchor"><dfn>--</dfn></a></code> 演算子</dt>
<dd>前置の <code class="inlinecode">--</code> 演算子は、前置<a id="id150" name="id150" class="targanchor"><dfn>デクリメント</dfn></a>演算子です。右側にあるものから1を減じ、減じた後の値が演算子全体の値となります。</dd>
<dt><code class="inlinecode"><a id="id151" name="id151" class="targanchor"><dfn>++</dfn></a></code> 演算子</dt>
<dd>前置の <code class="inlinecode">++</code> 演算子は、前置<a id="id152" name="id152" class="targanchor"><dfn>インクリメント</dfn></a>演算子です。右側にあるものに1を加算し、加算した後の値が演算子全体の値となります。</dd>
<dt><code class="inlinecode"><a id="id153" name="id153" class="targanchor"><dfn>new</dfn></a></code> 演算子</dt>
<dd><code class="inlinecode">new</code> 演算子は、右側にある関数評価式を関数呼び出しではなくオブジェクトの作成を行わせるようにします。</dd>
<dt><code class="inlinecode"><a id="id154" name="id154" class="targanchor"><dfn>invalidate</dfn></a> 演算子</code></dt>
<dd><code class="inlinecode">invalidate</code> 演算子は、右側にあるものを評価し、その結果のオブジェクトを無効化します。右側にある物が void, 文字列, 数値, オクテット列だった場合は何もしません。オブジェクトがすでに無効化されていた場合も何もしません。null が指定された場合は例外が発生します。</dd>
<dt><code class="inlinecode"><a id="id155" name="id155" class="targanchor"><dfn>isvalid</dfn></a> 演算子</code></dt>
<dd><code class="inlinecode">isvalid</code> 演算子は、右側、あるいは左側にあるものを評価し、その結果のオブジェクトが有効な場合に true、 無効な場合に false になります。演算子を評価対象の前に置いても、後ろに置いても同じ意味になります。対象が void, 文字列, 数値, オクテット列だった場合は常に真を返します。null が指定された場合は例外が発生します。</dd>
<dt><code class="inlinecode"><a id="id156" name="id156" class="targanchor"><dfn>delete</dfn></a> 演算子</code></dt>
<dd><code class="inlinecode">delete</code> 演算子は、右側に書いたオブジェクトのメンバ、あるいはローカル変数を消去します。消去に成功すれば true、失敗すれば false になります。</dd>
<dt><code class="inlinecode"><a id="id157" name="id157" class="targanchor"><dfn>typeof</dfn></a> 演算子</code></dt>
<dd><code class="inlinecode">typeof</code> 演算子は、右側にあるものを評価し、その型によって以下の文字列となります : void:&quot;void&quot;、整数:&quot;Integer&quot;、実数:&quot;Real&quot;、オブジェクト:&quot;Object&quot;、文字列:&quot;String&quot;、オクテット列:&quot;Octet&quot; 。ただし、オブジェクトのメンバを指定した場合で、メンバが無かった場合は &quot;undefined&quot; になります。</dd>
<dt><code class="inlinecode"><a id="id158" name="id158" class="targanchor"><dfn>#</dfn></a> 演算子</code></dt>
<dd><code class="inlinecode">#</code> 演算子は、右側にあるものを評価し、文字列として最初の一文字の文字コードを演算子全体の値とします。</dd>
<dt><code class="inlinecode"><a id="id159" name="id159" class="targanchor"><dfn>$</dfn></a> 演算子</code></dt>
<dd><code class="inlinecode">$</code> 演算子は、右側にあるものを評価し、その結果を文字コードとして、それが表す文字一文字を演算子全体の値とします。</dd>
<dt><code class="inlinecode"><a id="id160" name="id160" class="targanchor"><dfn>+</dfn></a> 演算子</code></dt>
<dd>単項の <code class="inlinecode"><a id="id161" name="id161" class="targanchor"><dfn>+</dfn></a></code> 演算子は、右側にあるものを評価します。右側にあるものが実数や整数ならば何もしません。それ以外の場合は、実数や数値への変換を試み、その結果が演算子全体の結果となります。文字列を数値に変換しようとする場合は、変換に失敗した場合は、例外を発生せず、 0 になります。小数点を含むような実数表現であれば実数に、そうでなければ整数に変換されます。文字列の先頭に 0x や 0b 、0 があれば、それぞれ 16 進数、2 進数、8 進数として解釈されます。</dd>
<dt><code class="inlinecode"><a id="id162" name="id162" class="targanchor"><dfn>-</dfn></a> 演算子</code></dt>
<dd>単項の <code class="inlinecode">-</code> 演算子は、左側にあるものを評価し、その結果を数値として、正負を逆にしたものを演算子全体の結果とします。</dd>
<dt><code class="inlinecode"><a id="id163" name="id163" class="targanchor"><dfn>&amp;</dfn></a> 演算子</code></dt>
<dd>単項の <code class="inlinecode">&amp;</code> 演算子は、右側に書いたオブジェクトのメンバへのアクセスを、プロパティハンドラを介さない、プロパティオブジェクトそのものへのアクセスに変更します。たとえば、propobj = &amp;obj.prop; では、obj のメンバプロパティ prop のプロパティハンドラは起動されず、メンバプロパティ prop の<a id="id164" name="id164" class="targanchor"><dfn>プロパティオブジェクト</dfn></a>そのものへの参照が propobj に代入されます。右側がプロパティへのアクセスではなかった場合の動作は不定です。</dd>
<dt><code class="inlinecode"><a id="id165" name="id165" class="targanchor"><dfn>*</dfn></a> 演算子</code></dt>
<dd>単項の <code class="inlinecode">*</code> 演算子は、右側に書いたオブジェクトのプロパティハンドラを動作させます。右側にはプロパティオブジェクトを表す式を書かなければなりません。たとえば、*propobj = 1; は、プロパティオブジェクトである propobj の setter ハンドラを呼び出し、1 を代入します。</dd>
<dt><code class="inlinecode"><a id="id166" name="id166" class="targanchor"><dfn>instanceof</dfn></a> 演算子</code></dt>
<dd><code class="inlinecode">instanceof</code> 演算子は、左側にあるものを評価し、次に右側にあるものを評価します。右側にはクラス名となる、文字列になるものを書き、左側にあるものが、そのクラスのインスタンスであれば true、そうでなければ false になります。</dd></dl></div></div>
<h1><a id="id167" name="id167">関数呼び出し、カッコ類、後置インクリメント・デクリメントなど</a>
</h1><div class="para"><div>
<dl>
<dt><code class="inlinecode"><a id="id168" name="id168" class="targanchor"><dfn>( )</dfn></a> 演算子</code></dt>
<dd><code class="inlinecode">( )</code> 演算子は、演算の優先順位を変更します。または、関数呼び出しを行います。</dd>
<dt><code class="inlinecode"><a id="id169" name="id169" class="targanchor"><dfn>[ ]</dfn></a> 演算子</code></dt>
<dd><code class="inlinecode">[ ]</code> 演算子は、間接メンバ選択演算子です。<code class="inlinecode">A [ B ]</code> と書かれた場合、A を先に評価し、 B を次に評価します。B を文字列として、そのメンバ名を A から探し、演算子全体としてはそのメンバへのアクセスとなります。左辺値として使われた場合は、オブジェクト内にメンバ B を、もし無ければ新規に作成する、という作用も伴います。</dd>
<dt><code class="inlinecode"><a id="id170" name="id170" class="targanchor"><dfn>.</dfn></a> 演算子</code></dt>
<dd><code class="inlinecode">.</code> 演算子は、直接メンバ選択演算子です。<code class="inlinecode">A.B</code> と書かれた場合、A を評価します。B を A から探し、演算子全体としてはそのメンバへのアクセスとなります。左辺値として使われた場合は、オブジェクト内にメンバ B を、もし無ければ新規に作成する、という作用も伴います。<br />
もし <code class="inlinecode">.</code> 演算子の左側が省略された場合は、with ステートメントの外側ならば global オブジェクト内のメンバを、with ステートメントの内側ならばその with で示されたオブジェクトのメンバを参照します。</dd>
<dt><code class="inlinecode"><a id="id171" name="id171" class="targanchor"><dfn>++</dfn></a> 演算子</code></dt>
<dd>後置の <code class="inlinecode">++</code> 演算子は、後置インクリメント演算子です。左にあるものに1を加算し、演算子全体としては加算する前の、左にあるもの、になります。</dd>
<dt><code class="inlinecode"><a id="id172" name="id172" class="targanchor"><dfn>--</dfn></a> 演算子</code></dt>
<dd>後置の <code class="inlinecode">--</code> 演算子は、後置デクリメント演算子です。左にあるものから1を減じ、演算子全体としては減じる前の、左にあるもの、になります。</dd>
<dt><code class="inlinecode"><a id="id173" name="id173" class="targanchor"><dfn>!</dfn></a> 演算子</code></dt>
<dd>後置の <code class="inlinecode">!</code> 演算子は、式評価演算子です。左にあるものを評価した結果を文字列として、それを式文字列として解釈します。結果は、その式文字列を解釈して評価した結果になります。式は this コンテキスト (この演算子を使った位置での this) 上で動作します。</dd>
<dt><code class="inlinecode"><a id="id174" name="id174" class="targanchor"><dfn>incontextof</dfn></a> 演算子</code></dt>
<dd><code class="inlinecode">incontextof</code> 演算子は、左にあるものを先に評価し、次に右にあるものを評価します。左にあるものを評価した結果をオブジェクトとして、そのオブジェクトのコンテキスト部分を、右にあるものを評価した結果と置き換えたものが演算全体の結果となります。</dd>
<dt><code class="inlinecode"><a id="id175" name="id175" class="targanchor"><dfn>int</dfn></a> 演算子</code></dt>
<dd>int 演算子は、右にあるものを評価し、それを整数型に変換したものが演算子全体の結果となります。C 言語のキャスト風に、(int) と書くこともできます。</dd>
<dt><code class="inlinecode"><a id="id176" name="id176" class="targanchor"><dfn>real</dfn></a> 演算子</code></dt>
<dd>real 演算子は、右にあるものを評価し、それを実数型に変換したものが演算子全体の結果となります。C 言語のキャスト風に (real) と書くこともできます。</dd>
<dt><code class="inlinecode"><a id="id177" name="id177" class="targanchor"><dfn>string</dfn></a> 演算子</code></dt>
<dd>string 演算子は、右にあるものを評価し、それを文字列型に変換したものが演算子全体の結果となります。C 言語のキャスト風に (string) と書くこともできます。</dd></dl></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>