「++」は、加算(インクリメント)演算子、
「--」は、減算(デクリメント)演算子
「+=」は、加算(インクリメント)代入演算子
「-=」は、減算(デクリメント)代入演算子、と呼ばれます。
演算子とは
演算子というのは、プログラミングの用語です。
最もよく使われる例は「1+1」とか「1-1」というところで使われる、「+」「-」「*」「/」の記号で、これは四則演算子と呼びます。
数学では「×」「÷」がコンピュータの都合上「*」や「/」になっています。また、割り算の余りを求めるためには剰余演算子「%」を使うようにもなっています。
この四則演算子では、演算子の左右の値を計算して結果を返す、というものですが、演算子には他にも多くの種類があります。比較演算子の「==」や「===」、代入演算子「=」などは、よく使いますね。
インクリメント演算子「++」、デクリメント演算子「--」
インクリメント演算子は、1を足し、デクリメント演算子は、1を引く、という機能を持ちます。
この演算子は、なくてもいいものです。使う場面はありません。
....
なくてもよいものを紹介するのもなんなのですが、実際そうなのです。ただ誰か他の人が書いたコードを理解するときには知っておかなければなりません。
サンプルコードで、この演算子が何をするのかを見ておきます。
インクリメント(加算)演算子には前置と後置というものがあります。
1 2 3 4 5 6 7 8 9 10 11 |
// 後置インクリメント演算子 var i = 1; var j = i++; console.log(i) // 2が表示される console.log(j) // 1が表示される // 前置インクリメント演算子 var i = 1; var j = ++i; console.log(i) // 2が表示される console.log(j) // 2が表示される |
「++」では、iに1を追加します。前置も後置もこの機能はかわらないのですが、それが返す値に差があり、足す前の値を返すのか、足された後の値を返すのかが違います。
「--」のデクリメント(減算)演算子の、1を減算するという機能でも同様に、前置と後置があります。
正直、前置と後置はわけがわからないので、覚える必要はないです。こんなのを使ってプログラムを書くと読みづらいコードになるだけです。どっちだったっけ?と疑問に思うときにネットで調べればいい、という程度のことです。
重ねてですが、これは覚える必要もなく、使う必要もないです。
では何を使うのか。です。
インクリメント代入演算子「+=」デクリメント代入演算子「-=」
こちらの演算子はよく使います。
そもそも、加算したりするのは次のように書きます。インクリメント演算子、また、インクリメント代入演算子、を使わなくたってかけます。
1 2 3 |
var i = 1; i = i + 1; console.log(i); // 2が表示される |
これを省略して書くために、インクリメント演算子やインクリメント代入演算子があります。
1 2 3 |
var i = 1; i += 1; console.log(i); // 2が表示される |
「+=」はこのようにして使えるものです。
これは代入時に「i = i + 1」と同じ変数名を二度書く必要がなくなるために記載方法になります。変数名が長い場合に値を増加させるために二回書きたくはない、という場合に便利なわけです。
「+=」や「-=」は使う。「++」や「--」は使う必要がない。
インクリメント演算子にくらべて、インクリメント代入演算子には、次の特徴があります。
・前置、後置、などの概念がない。
・数値の1だけではなく、任意の数を加算することができる。
この特徴によって、インクリメント代入演算子を使えば、インクリメント演算子「++」は使う必要がない、となります。
これはプログラマの趣味趣向によるものなので、「++」や「--」を使っている人をみて「それは使うべきではない!」と押し付けられるものではないのですが、よりプログラマの上級者になればおのずと「++」 や「--」は使わなくなる、ということを覚えておくとよいでしょう。
ちなみに、C++やJavaなどでは「i++」の表現は見かけることが多いですが、JavaScriptではより少なくなっています。
これはかつて主流だった JavaScript の構文をチェックするための仕組み、JSLint というツールで、この前置後置インクリメント演算子をつかっていると警告がだされて、「i += 1」で書け、というように指示されるからというところが大いにあるようです。オプションで切り替えることができるようでしたが標準では警告がでます。
現在は構文チェッカーは JSLint からより様々な構文に対応しやすい ESLint に変わったのですが、それでも「++」よりかは「+=」が用いられるような文化になっていると感じます。