Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

算术运算符

这篇文章需要文法复核。如何帮忙。

翻译正在进行中。

概述

算术运算符(Arithmetic operators)把数值(原始值或变量)作为它们的操作数(operand),然后返回一个单数值。标准的算术运算符有加 (+),减 (-),乘(*),除(/)。

加法 (+)

加法运算符(addition operator)的结果是数值求和,或者字符串拼接。

语法

运算符: x + y

示例

// Number + Number -> 数字相加
1 + 2 // 3

// Boolean + Number -> 数字相加
true + 1 // 2

// Boolean + Boolean -> 数字相加
false + false // 0

// Number + String -> 字符串连接
5 + "foo" // "5foo"

// String + Boolean -> 字符串连接
"foo" + false // "foofalse"

// String + String -> 字符串连接
"foo" + "bar" // "foobar"

减法 (-)

减法运算符(subtraction operator)使两个操作数相减,结果是它们的差值。

语法

运算符: x - y

示例

5 - 3 // 2
3 - 5 // -2
"foo" - 3 // NaN

除法 (/)

除法运算符(division operator)的结果是操作数的商 ,左操作数是被除数(dividend),右操作数是除数(divisor)。

语法

运算符: 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

乘法 (*)

乘法运算符(multiplication operator)的结果是操作数的乘积。

语法

运算符: x * y

示例

2 * 2 // 4
-2 * 2 // -4
Infinity * 0 // NaN
Infinity * Infinity // Infinity
"foo" * 2 // NaN

求余 (%)

求余运算符(remainder operator)返回第一个操作数对第二个操作数的模,即 var1 对 var2 取模,其中 var1 和 var2 是变量。取模功能就是 var1 除以 var2 的整型余数。 以前有个提议,在ECMAScript未来的版本中,可能会有一个获取实际模的运算符。

语法

运算符: var1 % var2

示例

12 % 5 // 2
-1 % 2 // -1
NaN % 2 // NaN

幂 (**)

 

幂运算符(exponentiation operator)返回第一个操作数做底数,第二个操作数做指数的乘方。即, var1var2 ,其中 var1var2 是其两个操作数。幂运算符是右结合的。a ** b ** c 等同于 a ** (b ** c)  .

语法

运算符: var1 ** var2

注解

包括 PHP 或 Python 等的大多数语言中,都包含幂运算符(一般来说符号是 ^ 或者 **)。这些语言中的幂运算符有着比其他的单目运算符(如一元 + 或一元 - )更高的优先级。但是作为例外,在 Bash 或当前的 ES7 幂运算符的草案中,**  运算符被设计为比单目运算符优先级更低。

-2 ** 2 // 在 ES7 和 Bash 中等于 4 ,而在其他语言中一般等于 -4

-(2 ** 2); // -4 in JavaScript and the author's intention is unambiguous.
 

示例

2 ** 3 // 8
3 ** 2 // 9
3 ** 2.5 // 15.588457268119896
10 ** -1 // 0.1
NaN ** 2 // NaN

2 ** 3 ** 2 // 512
2 ** (3 ** 2) // 512
(2 ** 3) ** 2 // 64

递增 (++)

递增运算符(increment operator)为其操作数增加1,返回一个数值。

  • 如果后置(postfix)使用,即运算符位于操作数的后面(如 x++),那么将会在递增前返回数值。
  • 如果前置(prefix)使用,即运算符位于操作数的前面(如 ++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-- or --x

示例

// 后置 
var x = 3;
y = x--; // y = 3, x = 2

// 前置
var a = 2;
b = --a; // a = 1, b = 1

一元负号 (-)

一元负号运算符(unary negation operator)位于操作数前面,并转换操作数的符号。

语法

运算符: -x

示例

var x = 3;
y = -x; // y = -3, x = 3

一元正号 (+)

一元正号运算符(unary plus operator)位于其操作数前面,计算其操作数的数值,如果操作数不是一个数值,会尝试将其转换成一个数值。 尽管一元负号也能转换非数值类型,但是一元正号是转换其他对象到数值的最快方法,也是最推荐的做法,因为它不会对数值执行任何多余操作。它可以将字符串转换成整数和浮点数形式,也可以转换非字符串值 truefalse  null。小数和十六进制格式字符串也可以转换成数值。负数形式字符串也可以转换成数值(对于十六进制不适用)。如果它不能解析一个值,则计算结果为 NaN.

语法

运算符: +x

示例

+3     // 3
+"3"   // 3
+true  // 1
+false // 0
+null  // 0

规范

Specification Status Comment
ECMAScript 1st Edition. Standard Initial definition.
ECMAScript 5.1 (ECMA-262) Standard Defined in several sections of the specification: Additive operators, Multiplicative operators, Postfix expressions, Unary operators.
ECMAScript 2015 (6th Edition, ECMA-262) Standard Defined in several sections of the specification: Additive operators, Multiplicative operators, Postfix expressions, Unary operators.
ECMAScript 7 Draft Exponentiation operator.

浏览器兼容性

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
Exponentiation operator ? 42 (42) ? ? ?
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
Exponentiation operator ? ? 42.0 (42) ? ? ?

相关链接

文档标签和贡献者

标签: 
 此页面的贡献者: git123hub, AnnAngela, tiansh, AlexChao
 最后编辑者: git123hub,