算術演算子
算術演算子はオペランド(計算対象)として数値を扱い、単一の数値を返します。
標準の算術演算子は、加算(+
)、減算(-
)、乗算(*
)、除算(/
)です。
加算(+)
加算演算子はオペランド(計算対象)の合計を算出しますが、文字列の連結も行います。
/** 文法 **/
x + y
/** 例 **/
// 数値 + 数値 -> 加算
1 + 2 // 3
// 真偽値 + 数値 -> 加算
true + 1 // 2
// 真偽値 + 真偽値 -> 加算
false + false // 0
// 数値 + 文字列 -> 連結
5 + "foo" // "5foo"
// 文字列 + 真偽値 -> 連結
"foo" + false // "foofalse"
// 文字列 + 文字列 -> 連結
"foo" + "bar" // "foobar"
減算(-)
減算演算子は2つのオペランド(計算対象)の引き算を行い、その差分を算出します。
/** 文法 **/
x - y
/** 例 **/
5 - 3 // 2
3 - 5 // -2
"foo" - 3 // NaN
除算(/)
除算演算子は、左のオペランド(計算対象)を割られる対象、右のオペランドを割る数として、それらの商を算出します。
/** 文法 **/
x / y
/** 例 **/
1 / 2 // JavaScriptでは0.5を返します。
1 / 2 // Javaでは0を返します。
// (どちらも浮動小数点数で無ければ)
1.0 / 2.0 // JavaScriptでもJavaでも、0.5を返します。
2.0 / 0 // JavaScriptではInfinity(無限)が返されます。
2.0 / 0.0 // 同様にInfinity(無限)が返されます。
2.0 / -0.0 // JavaScriptでは-Infinity(マイナス無限大)が返されます。
乗算(*)
乗算演算子は、オペランド(計算対象)の積を算出します。
/** 文法 **/
x * y
/** 例 **/
2 * 2 // 4
-2 * 2 // -4
Infinity * 0 // NaN
Infinity * Infinity // Infinity
"foo" * 2 // NaN
剰余(%)
演算子は、1つ目のオペランド(計算対象)を2つ目のオペランドで割った際の余りを整数で返します。 将来のECMAScriptのバージョンにおいて、実際の剰余演算子を採用する計画(申し出?)があります。
/** 文法 **/
var1 % var2
/** 例 **/
12 % 5 // 2
-1 % 2 // -1
NaN % 2 // NaN
インクリメント(++)
インクリメント演算子は、オペランド(計算対象)を増加(1を加算)して、その値を返します。
-
接尾語としてオペランドの後(例:
x++
)に付け加えれば、増加前に値が返されます。 -
接頭語としてオペランドの前(例:
++x
)に付け加えれば、増加後に値が返されます。
/** 文法 **/
x++
//または
++x
/** 例 **/
// 接尾語
var x = 3;
y = x++; // y = 3, x = 4
// 接頭語
var a = 2;
b = ++a; // a = 3, b = 3
デクリメント(--)
デクリメント演算子は、オペランド(計算対象)を減少(1を減算)し、その値を返します。
-
接尾語としてオペランドの後(例:
x--
)に付け加えれば、減少前に値が返されます。 -
接頭語としてオペランドの前(例:
--x
)に付け加えれば、減少後に値が返されます。
/** 文法 **/
x--
//または
--x
/** 例 **/
// 接尾語
var x = 3;
y = x--; // y = 3, x = 2
// 接頭語
var a = 2;
b = --a; // a = 1, b = 1
単項のマイナス(-)
オペランドの前に来る単項のマイナス演算子は、そのオペランドのプラス/マイナスを反転(-1の乗算)します。
/** 文法 **/
-x
/** 例 **/
var x = 3;
y = -x; // y = -3, x = 3
単項のプラス(+)
オペランドの前に来る単項のプラス演算子は、そのオペランドを評価して数値で無ければ数値への変換を試みます。
単項のマイナス演算子でも非数値の変換を行うことが出来ますが、
単項のプラス演算子は処理が最も早く、数値に対して他の演算を実行しない事から、
何かを数値に変換する際にはこちらを使用するのが好ましいと言えます。
文字列ではないtrue
、false
、null
と同様に、
整数と浮動小数点数を表す文字列を変換することが可能です。
整数は10進数と16進数("0x"の接頭辞)のフォーマットがサポートされます。
マイナスの数はサポートされます。(ただし、16進数は除く)
もし値が解析できない場合は、NaNと評価されます。
/** 文法 **/
+x
/** 例 **/
+3 // 3
+"3" // 3
+true // 1
+false // 0
+null // 0
仕様
ブラウザ互換性
機能 | Chrome | Firefox (Gecko) |
IE | Opera | Safari |
---|---|---|---|---|---|
基本 | ◯ | ◯ | ◯ | ◯ | ◯ |
機能 | Android | Chrome for Android |
Firefox Mobile |
IE Mobile |
Opera Mobile |
Safari Mobile |
---|---|---|---|---|---|---|
基本 | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ |
関連項目
- Assignment operators
© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
- 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
- MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。