Language
日本語
English

Caution

JavaScript is disabled in your browser.
This site uses JavaScript for features such as search.
For the best experience, please enable JavaScript before browsing this site.

  1. Home
  2. JavaScriptBeginner - Basic Arithmetic with Operators

Basic Arithmetic with Operators - Japanese Only

みなさまどうも。いかがお過ごしでしょうか。

引き続き簡単な『演算子』を使って計算をしてみましょう。演算子とは演算に使用する記号の事を指します。『+』とか『-』とかのことです。演算子は色々な種類があり、それぞれに名前がついています。

JavaScriptでよく使われる演算子は

  • 算術演算子
  • 代入演算子
  • 文字列連結演算子
  • 論理演算子
  • 比較演算子

の5つがあります。その他2進法で演算を行う『ビット演算子』というものもありますがJavaScriptの言語の特性上ほぼ使用することはないので覚えなくて大丈夫です。

今回は『算術演算子』、『代入演算子』、『文字列連結演算子』について勉強していきます。

まずは算術演算子についてですね。

算術演算子とは四則演算のことです。みなさまが学校でこれまで勉強してきた加算(足し算)、減算(引き算)、乗算(掛け算)、除算(割り算)って意味ですね。

JavaScriptの演算子は加算は『+』、減算は『-』、乗算は『*』、除算は『/』、そして剰余(割り算した時の余り)は『%』を使用します。これらはほぼ全てのプログラミング言語共通ですので覚えておきましょう。ちなみにPCの電卓ソフトなんかでも同じような感じですね。

演算の対象となる値や数値や変数の事を『オペランド』といいます。良く開発者用の公式仕様サイトなどで良く出てきますので覚えておきましょう。

というわけで記述してみます。今回も外部JavaScriptファイルに記述していきますね、準備はよろしいでしょうか。

まず加算です。加算は『+』を使用します。

var x = 1 + 2;
console.log(x);

これは『3』と表示されます。

そしてプログラミングならではの小技、『インクリメント』を紹介します。これは変数の値を『1』増やすというものです。記述してみますね。

var x = 0;

++x;
console.log(x); // これは1

上記のように『++』と記述するとその変数に『1』を追加することができます。プログラミングというのは『1』を足すという処理を行う事が非常に多く、このインクリメントは使用頻度がかなり高いです。

ちなみに最初に変数『x』に『0』を代入したりして変数の中身を数値にしないとインクリメントすることはできません

var x; // 変数宣言したのみ

++x; // 変数『x』の中身が数値じゃないので1が足せない
console.log(x);

これはエラーです。こちら間違いやすいので注意しましょう。

続いて減算です。減算は『-』を使用します。

var x = 2 - 1;
console.log(x);

これは『1』が表示されます。これも数学と同じような感じなので特に問題ありませんね。

そして減算もちょい技があります。『--』と記述すると『++』のインクリメントのように数値から『1』を引くことができます。こちらは『デクリメント』と呼ばれます。

var x = 1;

--x;
console.log(x); // これは0

上記は『0』とコンソールに出力されます。インクリメントと比べると使用頻度はかなり下がりますがインクリメントとデクリメントはセットで覚えておくと良いです。

インクリメントとデクリメントは前置で記述するパターンと後置で記述するパターンがあります。 以下のような感じですね。以下はインクリメントを記述していますがデクリメントも同じです。

var a = 0, b = 0;

++a;
b++;

console.log(a); // これは1です。
console.log(b); // これは1です。

これは変数『a』,『b』共に『1』が加算されコンソールには『1』と出力されます。 このような単独で行う場合は特に変わったことはありません。

しかし代入式などを並行して演算させる場合は変数の前に書くか後に書くかで演算が変わります。 以下の例を見て下さい。

var a = 0, b = 0, c, d;

c = ++a;
d = b++;

console.log(a); // これは1です。
console.log(b); // これは1です。
console.log(c); // これは1です。
console.log(d); // これは0です。

最初に変数『a』,『b』に『0』を代入して前置と後置のインクリメントを行います。そのあと変数『c』,『d』にその値を代入していますね。

さて変数『a』,『b』は『1』となるのですが、問題は変数『c』,『d』です。もう答えがコメントアウトで書いてありますが変数『c』は『1』、変数『d』は『0』となります。

なぜこんな事になるのかというと後置でインクリメントを行った場合はまず最初に値を返し、その後に『1』が加算されるという結果になるからだったりします。

この場合ですと先に変数『b』の値が変数『d』に代入され、その後に変数『b』に『1』が加算されるという感じです。

これらは以下のように記述したことと同じです。

var a = 0, b = 0, c, d;

// これは c = ++a;のパターン
a = a + 1;
c = a;

// これはd = b++;のパターン
d = b;
b = b + 1;

console.log(a); // これは1です。
console.log(b); // これは1です。
console.log(c); // これは1です。
console.log(d); // これは0です。

後置タイプのインクリメントでは値を返した後に『1』が加算、というわけでアラート関数などでも加算される前の値でアラートダイアログが実行されたりします。アラート関数が返された値を受け取りアラートダイアログを表示し、その後に『1』が加算される流れです。

var x = 0;

alert(x++); // これは0が表示された後に1が加算されます。
alert(x); // 『x』に1が加算されたので1が表示されます。

というわけでと長々と書きましたがややこしいですよね。特に後置パターンはイメージと大分かけ離れた動きなので難しいと思います。なので基本的にはインクリメント、デクリメント共に前置パターンが正解と思っちゃってOKです。

ただし、後置パターンは全て間違い、というわけでは全くないので使うべき状況であるならば使ってしまって問題ありません。要は使い分けの問題なので状況に合わせて適切な処理を書くのが正解でございます。

(´-`).。oO(尚、後置パターンより前置パターンの方が処理が早い、と言われておりますが...)

(´-`).。oO(昨今のブラウザで検証してみたところ、そこまでの差は計測できませんでした...)

(´-`).。oO(昔のブラウザではちょっとした差になっていた気がするのですが...)

(´-`).。oO(今現状ではどちらを使っても処理速度的にはそこまで変化はないみたいですね...)

続いて乗算を行ってみましょう。数学では『×』を使用しますがプログラミングでは『*』を使用します。ここ間違いやすいので注意ですね。

var x = 2 * 3;
console.log(x);

これはコンソールに『6』と出力されます。乗算については注意点は特にありません。

算術演算子の最後に除算と剰余を解説します。通常の除算は『/』、剰余(割り算した時の余り)は『%』を使用します。数学では『÷』をしますがプログラミングでは『/』と『%』になりますのでこちらも間違いないようにしましょう。以下が記述例です。

var x = 10 / 5;
var y = 10 % 3;

console.log(x); // これは2です。
console.log(y); // これは1です。

こちらも特に問題ないかと思います。

さてこれで算術演算子は全部解説が終わったのですが演算子には優先順位があり、複数の算術演算子を同時に使用した場合処理の順番が前後する場合があります。算術演算子のみの優先順位については数学や算数で習った通り、掛け算と割り算が先に演算されます。

var x = 1 + 2 * 5;
console.log(x); // これは11です。

var y = 1 + 6 / 2;
console.log(y); // これは4です。

演算させる順番を変更したい場合は数学と同じように括弧でくくれば優先されます。

var x = (1 + 2) * 5;

console.log(x); // これは15です。

以上が算術演算子の基本的な解説です。長くなっちゃいましたが問題はないでしょうか?

続いて代入演算子です。代入演算子とは代入させる演算子、というわけですでに勉強済みの『=』のことです。

ちょっと応用技があるので紹介しておきます。前の記事で自分を計算に使ってその計算結果をさらに自分に代入するというプログラミングならではの演算をやりましたね。あれの短縮表記があります。代入演算子と算術演算子で組み合わせると以下のような記述が可能です。

x += y //これはx = x + yと同じ意味です。

x -= y //これはx = x - yと同じ意味です。

x *= y //これはx = x * yと同じ意味です。

x /= y //これはx = x / yと同じ意味です。

『+=』は良く使用されるので覚えておきましょう。

さて最後に『文字列連結演算子』を紹介します。これは『+』を使用して文字の連結ができますよ、というお話です。『-』は使えません。『+』のみです。『-』を使って任意の文字を繰り抜いて返すという処理があれば良いのですがJavaScriptではそういった処理が用意されていないのでご注意ください。以下記述例です。

var x = "Hello ";
var y = "world";

console.log(x + y); // これは『Hello world』と出力されます。

ここまではOKかと思いますが、この文字列連結演算子はいくつか注意点があります。 この文字列連結演算子は文字通り文字列を連結させる演算なので両方が文字列である必要があります。しかし『文字列以外のオペラント』と『文字列』で連結を行った場合、JavaScriptでは両方共に文字列だったものとして演算するという動きをみせます。

以下が記述例です。

var x = 1; // これは数値です。
var y = "world"; // これは文字列です。

console.log(x + y); // これは『1world』と出力されます。

// ちなみにこれは以下のように記述したことと同じです。
var x = "1";
var y = "world";

console.log(x + y);

ちょっとややこしいのが式の中に複数の『+』を使用した場合です。『+』は左から順番に演算されるので、文字列が登場した瞬間から後に続く『+』も含めて文字列連結演算子として処理が行われますが、それまでは普通の算術演算子としての加算が行われます。

var x = 1 + 2 + "3"; // 最初に『1 + 2』が演算され『3』という結果を出した後にその『"3" 』と続く『"3"』が連結されます。
console.log(x); // これは『33』と出力されます。

var y = "1" + 2 + 3; // 最初に"1"が登場しているので全て文字列として連結されます。
console.log(y); // これは『123』として出力されます。

ここがちょっとややこしいので注意しましょう。ちなみにこういう風にややこしくなるので文字列として演算させたいときは分かりやすいように最初っから『"』や『'』でくくって文字列として記述しておくというマナーがあったりなかったりします。他の人が読んだときに読みやすい記述になるよう気をつけてればOKです。

そして文字列連結でも『+=』を使用することができますのでこちらも要チェックです。

var x = "Hello ";
var y = "world";

x += y;

console.log(x); // これは『Hello world』と出力されます。

というわけで簡単な演算子については以上となります。ちょっと長くなってしまいましたが大丈夫そうでしょうか。自分で色々と式を書いて実験してみると良い経験になりますのでお時間を作って是非色々と書いてみてください。

続いての記事では『配列』について勉強していきます。ちょっと地味な記事が続いているのですが引き続き頑張っていきましょう。ではではー。

This article was written by Sakurama.

Author's beloved small mammal

桜舞 春人 Sakurama Haruto

A Tokyo-based programmer who has been creating various content since the ISDN era, with a bit of concern about his hair. A true long sleeper who generally feels unwell without at least 10 hours of sleep. His dream is to live a life where he can sleep as much as he wants. Loves games, sports, and music. Please share some hair with him.

If you find any errors or copyright issues, please .