インクリメント/1加算

JavaScriptではC言語等のようにインクリメントをサポートしています。インクリメントは変数に1を加算するものです。例えば変数nをインクリメントするには以下のように指定します。

n++

変数nに12が入っていれば1が加算され13になります。(サンプル01を実行する
変数の内容が数値ではなく文字列になっている場合には、数値型に変換されてからインクリメントされます。変換することができない場合にはインクリメントするとNaN (Not a Number) となります。C言語などと異なり16ビット、32ビットまでの値しか扱うことができないという制限はありません。ただし、非常に大きな値(無限値など)をインクリメントした場合には値ではなくInfinityを返します。また、C言語などと異なり小数値に対してもインクリメントを行うことができます。例えば2.15をインクリメントした場合、3.15となります。

変数に1を加算するのであれば以下のように指定しても基本的には同じです。

n = n + 1
または
n += 1

しかし、同じになるのは単独で行った場合で、式やプロパティに代入する場合には上記とは異なった結果になります。サンプル01では画面には12が表示されましたが、n+1にすると画面には13が表示されます。(サンプル02を実行する)
これはインクリメントは先に処理が行われた後に加算が行われるためです。つまりdocument.write(n++)であればdocument.write(n);n=n+1;と同じになります。逆に先にインクリメントしてしまうこともできます。例えば変数nの値が評価される前に加算するには以下のように記述します。(サンプル03を実行する)

++n

先に加算する場合はプリインクリメント、後で加算する場合はポストインクリメントと呼びます。BASICやJavaなど高級言語ではインクリメントの恩恵は、あまり感じないかもしれませんが、マシン語などでは連続してメモリ内を読み出したり、書き込んだりする場合には多大な威力を発揮してくれます。

変数だけでなくプロパティ値もインクリメントの対象にできると書きましたが、そうではない場合もあります。例えばスタイルシートのプロパティなどは単純にインクリメントしても正しい結果を得ることはできません。(サンプル04を実行する)
スタイルシートの場合は単純な数値ではなく単位が付属している場合があるためです。この単位を削除するにはparseInt()を使います。その後、インクリメントではなく普通に1を加算して新たな値として設定しなければなりません。(サンプル05を実行する)

他にもバージョン番号なども"2.0.3"のようになっている場合にはインクリメントすることはできません。(サンプル06を実行する)
"2.0"のように数値型に変換できる場合には、文字列が数値に変換されインクリメントすることができます。(サンプル07を実行する)

最終更新日:2007年1月6日

>目次に戻る