JavaScript 入門 演算子

出典: フリー教科書『ウィキブックス(Wikibooks)』

JavaScript > 入門 演算子

目次

[編集] 演算子と式

[編集] 算術演算

プログラムは、その原理の研究の段階から、純粋に数学処理のために存在してきた。最初のコンピューターがロケットの弾道計算を行っているときから、コンピューターは計算機として存在している。

そのため、ほとんどのプログラム言語は、数学処理のために多くの演算子を最初の段階から使うことが出来る。

まずは、基本中の基本。加算処理を行ってみる。

var a=10, b=20;  // まずは変数の宣言
var c = a + b;  // 足し算の実行
document.write( c ); // 結果の表示

JavaScriptは、これと同じように四則演算を一通りこなすことが出来る。

  • 「+」加算
  • 「-」減算
  • 「*」乗算
  • 「/」除算
  • 「%」剰余算(割った余りの事)

また、式をカッコ「()」で囲うことで、演算の順序を変更できる。

var d = (a + b) * 5 + b;	// 括弧の中のa+bが先に実行される

[編集] 代入演算子

代入演算子では、変数に数値を代入するとき、

var d = 5;	// dに5を代入
d = d + 5;	// さらに5を代入

となるが、このように、自分自身に計算を行って再代入を行うときには次の様な省略表記がある。

d = d + 5;
d += 5;

これは、加算を行う場合だが、減算や乗算等の場合の表記法もある。

foo += 5;	// これは加算
foo -= 5;	// これは減算
foo *= 5;	// これは乗算
foo /= 5;	// これは余算
foo %= 5;	// これは剰余算

最後だが、再代入の書式で特に多様するのがインクリメントとデクリメントである。 プログラムは繰り返し同じ計算を「値が1違う場合」で何度も行う処理が非常に多いため、このための簡略書式がある。 値を1増やすのがインクリメントで変数が「i」なら「i++」と書く。同じく1減らす場合をデクリメントと言い「i--」と書く。

var i = 0;
i++; // ここで1をプラスする
document.write( i );  // 「1」が表示される
i--; // 1からマイナスすると0ですね
document.write( i );  // 「0」が表示される

[編集] 演算子の前置と後置の区別

以前の演算子の項で、値を増やすためのインクリメント、デクリメントを解説したが、正確にはインクリメント、デクリメントともに前置演算子と後置演算子2つの種類がある。 それぞれを前方インクリメント、後方インクリメント、前方デクリメント、後方デクリメントと言い、書式は次のようになる。

++i;	// 前方インクリメント
i++;	// 後方インクリメント
--i;	// 前方デクリメント
i--;	// 後方デクリメント

前方インクリメントと後方インクリメントの違いは、前方インクリメントの場合は式を直ちに計算して1を加えるのに対し、後方インクリメントは文の終了時に最後に1を加えるところである。 つまりは、

var i = 0;
document.write( ++i );	// 「1」を表示
document.write( i );	// 「1」を表示
i = 0;
document.write( i++ );	// 「0」を表示
document.write( i );	// 「1」を表示

となる。

これだけでは何の利点があるかわかりにくいが、次の様に配列要素にアクセスする場合などに違いが出る。

var i = 0;
while( arr.length < i )
  document.write( arr[i++] );	// arr[0]からアクセスする、前方インクリメントの場合、arr[1]からアクセスしてしまう。

この様な理由から、後方インクリメントの方が、コードの行数圧縮に向いており、C言語の場合などには前方インクリメントより使う割合が高かった。 そのため、JavaScriptではその伝統に従ってどちらでも良い場合なども、可読性の問題で後方インクリメントの方が良く使われている。

[編集] 文字列の連結

この様に、様々な算術記号を使えるが、文字列同士の演算の場合でもこれは通用する。このときは

document.write( "Hello "+"JavaScript "+"World!" );	// 「Hello JavaScript World!」と表示される

また、これも良く知っておくべきなので解説するが、文字列と他の型のデータを加え合わせる場合、その他のデータ型はすべて文字列型に自動変換される。

var hoge = 100;
document.write( "数値は:" + hoge ); // 「数値は:100」と表示される
hoge = true;
document.write( "真か偽か:" + hoge ); // 「真か偽か:true」と表示される

ちなみに、これも文字列を連結していく場合に省略表記法がある。

hoge += "hoge"; // 文字列の最後に「hoge」を継ぎ足す。
ヘルプ