JavaScript 算术

处理数值的典型情景是算数。


JavaScript 算数运算符

算术运算符对数值(文字或变量)执行算术运算。

运算符描述
+加法
-减法
*乘法
**幂(ES2016
/除法
%系数
++递增
递减

算数运算符

典型的算术运算会操作两个数值。这两个数可以是字面量:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <p>典型的算术运算会操作两个数(或表达式)并返回一个新的数。</p>
  5. <p id="demo">
  6. <script>
  7. var x = 7 + 8;
  8. document.getElementById("demo").innerHTML = x;
  9. </script>
  10. </body>
  11. </html>

或变量:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <p>典型的算术运算会操作两个数(或表达式)并返回一个新的数。</p>
  5. <p id="demo">
  6. <script>
  7. var a = 7;
  8. var b = 8;
  9. var x = a + b;
  10. document.getElementById("demo").innerHTML = x;
  11. </script>
  12. </body>
  13. </html>

或表达式:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <p>典型的算术运算会操作两个数(或表达式)并返回一个新的数。</p>
  5. <p id="demo">
  6. <script>
  7. var a = 2;
  8. var x = (7 + 8) * a;
  9. document.getElementById("demo").innerHTML = x;
  10. </script>
  11. </body>
  12. </html>

运算符和操作数

在算术运算中,数被称为操作数。(两个操作数之间执行的)运算由运算符定义。

操作数运算符操作数
7+8

加法

加法运算符(+)加数:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>+ 运算符</h1>
  5. <p id="demo">
  6. <script>
  7. var x = 7;
  8. var y = 8;
  9. var z = x + y;
  10. document.getElementById("demo").innerHTML = z;
  11. </script>
  12. </body>
  13. </html>

减法

减法运算符(-)减数。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>- 运算符</h1>
  5. <p id="demo">
  6. <script>
  7. var x = 7;
  8. var y = 8;
  9. var z = x - y;
  10. document.getElementById("demo").innerHTML = z
  11. </script>
  12. </body>
  13. </html>

乘法

乘法运算符(*)乘数。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>* 运算符</h1>
  5. <p id="demo">
  6. <script>
  7. var x = 7;
  8. var y = 8;
  9. var z = x * y;
  10. document.getElementById("demo").innerHTML = z;
  11. </script>
  12. </body>
  13. </html>

除法

除法运算符(/)除数。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>/ 运算符</h1>
  5. <p id="demo">
  6. <script>
  7. var x = 7;
  8. var y = 2;
  9. var z = x / y;
  10. document.getElementById("demo").innerHTML = z;
  11. </script>
  12. </body>
  13. </html>

系数

系数运算符(%)返回除法的余数。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>% 运算符</h1>
  5. <p id="demo">
  6. <script>
  7. var x = 7;
  8. var y = 2;
  9. var z = x % y;
  10. document.getElementById("demo").innerHTML = z;
  11. </script>
  12. </body>
  13. </html>

注释:在算术中,两个整数的除法产生商和余数。

注释:在数学中,模运算的结果是算术除法的余数。


递增

递增运算符(++)对数值进行递增。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>++ 运算符</h1>
  5. <p id="demo">
  6. <script>
  7. var x = 7;
  8. x++;
  9. var z = x;
  10. document.getElementById("demo").innerHTML = z;
  11. </script>
  12. </body>
  13. </html>

递减

递减运算符(- -)对数值进行递减。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>-- 运算符</h1>
  5. <p id="demo">
  6. <script>
  7. var x = 7;
  8. x--;
  9. var z = x;
  10. document.getElementById("demo").innerHTML = z;
  11. </script>
  12. </body>
  13. </html>

取幂运算符(**)将第一个操作数提升到第二个操作数的幂。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>** 运算符</h1>
  5. <p id="demo">
  6. <script>
  7. var x = 5;
  8. document.getElementById("demo").innerHTML = x ** 2;
  9. </script>
  10. </body>
  11. </html>

x ** y 产生的结果与 Math.pow(x,y) 相同:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>Math.pow()</h1>
  5. <p id="demo">
  6. <script>
  7. var x = 5;
  8. document.getElementById("demo").innerHTML = Math.pow(x,2);
  9. </script>
  10. </body>
  11. </html>

运算符优先级

运算符优先级(Operator precedence)描述了在算术表达式中所执行操作的顺序。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <p>乘法的优先级高于加法。</p>
  5. <p id="demo">
  6. <script>
  7. document.getElementById("demo").innerHTML = 200 + 50 * 2;
  8. </script>
  9. </body>
  10. </html>

上例的结果是 250 * 2 还是 200 + 100 呢?

是加法还是乘法优先呢?

在传统的学校数学中,乘法是优先的。

乘法(*)和除法(%)比加法(+)和减法(-)拥有更高的优先级。

同时,(就像在学校的数学中那样)能够通过使用括号来改变优先级:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <p>乘法的优先级高于加法。</p>
  5. <p>但是括号的优先于乘法。</p>
  6. <p id="demo">
  7. <script>
  8. document.getElementById("demo").innerHTML = (200 + 50) * 2;
  9. </script>
  10. </body>
  11. </html>

当使用括号时,括号中的运算符会首先被计算。

当多个运算拥有相同的优先级时(比如加法和减法),对它们的计算是从左向右的:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <p>如果多个运算符优先级相同,则从左向右计算。</p>
  5. <p id="demo">
  6. <script>
  7. document.getElementById("demo").innerHTML = 200 + 50 - 2;
  8. </script>
  9. </body>
  10. </html>

JavaScript 运算符优先级值

运算符描述实例
20( )表达式分组(3 + 4)
    
19.成员person.name
19[]成员person["name"]
19()函数调用myFunction()
19new创建new Date()
    
17++后缀递增i++
17后缀递减i—
    
16++前缀递增++i
16前缀递减—i
16!逻辑否!(x==y)
16typeof类型typeof x
    
15**求幂 (ES7)10 * 2
    
1410 * 5
14/10 / 5
14%模数除法10 % 5
    
13+10 + 5
13-10 - 5
    
12<<左位移x << 2
12>>右位移x >> 2
12>>>右位移(无符号)x >>> 2
    
11<小于x < y
11<=小于或等于x <= y
11>大于x > y
11>=大于或等于x >= y
11in对象中的属性"PI" in Math
11instanceof对象的实例instanceof Array
    
10==相等x == y
10===严格相等x === y
10!=不相等x != y
10!==严格不相等x !== y
    
9&按位与x & y
8^按位 XORx ^ y
7|按位或x | y
6&&逻辑与x && y
5||逻辑否x || y
4? :条件? "Yes" : "No"
    
3=赋值x = y
3+=赋值x += y
3-=赋值x -= y
3*=赋值x *= y
3%=赋值x %= y
3<<=赋值x <<= y
3>>=赋值x >>= y
3>>>=赋值x >>>= y
3&=赋值x &= y
3^=赋值x ^= y
3|=赋值x |= y
    
2yield暂停函数yield x
1,逗号7 , 8

提示:括号中的表达式会在值在表达式的其余部分中被使用之前进行完全计算。