JavaScript 算术

  • JavaScript算术运算符

    算术运算符对数字(文字或变量)执行算术运算。
    运算符 说明
    + 加法
    - 减法
    * 乘法
    ** 指数(ES6)
    / 除法
    % 模数(除法除外)
    ++ 递增
    -- 递减
  • 算术运算

    典型的算术运算对两个数字进行操作。这两个数字可以是文字:
    var x = 100 + 50;
    尝试一下
    或变量:
    var x = a + b;
    尝试一下
    或表达式:
    var x = (100 + 50) * a;
    尝试一下
  • 操作符和操作数

    数字(在算术运算中)称为操作数。操作(在两个操作数之间执行)由操作符定义。
    例如100+100
    操作数 操作符 操作数
    100 + 100
  • 加,减,乘,除,模,递增,递减,幂

    加法操作符(+)将数字相加:
    var x = 5 + 5;
    var y = "5" + 5;
    var z = "Hello" + 5;
    
    尝试一下
    减法运算符(-)减去数字。
    var x = 5;
    var y = 2;
    var z = x - y;
    
    尝试一下
    乘法运算符(*)数字相乘。
    var x = 5;
    var y = 2;
    var z = x * y;
    
    尝试一下
    除法运算符(/)数字相除。
    var x = 5;
    var y = 2;
    var z = x / y;
    
    尝试一下
    模数运算符(%)返回除法的余数。
    var x = 5;
    var y = 2;
    var z = x % y;
    
    尝试一下
    在算术中,两个整数的除法产生商和余数。在数学中,模运算的结果是算术除法的余数。
    注意,0当作除数,将会返回无穷(Infinity(或-Infinity))后面章节会介绍。
    增量运算符(++)递增的数字。
    var x = 5;
    x++;
    var z = x;
    
    尝试一下
    减量操作符(--)递减的数字。
    var x = 5;
    x--;
    var z = x;
    
    尝试一下
    幂运算符(**),第一操作数的第二操作数次方。
    var x = 5;
    var z = x ** 2;          // 结果是25
    
    尝试一下
    x ** y产生的结果与Math.pow(x,y)一致:
    var x = 5;
    var z = Math.pow(x,2);   // 结果是25
    
    尝试一下
  • 运算符的优先级

    运算符优先级描述了在算术表达式中执行操作的顺序。
    var x = 100 + 50 * 3;
    
    尝试一下
    以上示例的结果与150 * 3相同,还是与100 + 150相同?加法或乘法谁先执行?与传统的学校数学一样,乘法首先完成。乘法(*)和除法(/)的优先级高于加法(+)和减法(-)。并且(如在学校数学中)可以通过使用括号来改变优先级:
    var x = (100 + 50) * 3;
    
    尝试一下
    使用括号时,首先计算括号内的操作。当许多操作具有相同的优先级(如加法和减法)时,它们从左到右计算:
    var x = 100 + 50 - 3;
    
    尝试一下
  • JavaScript运算符优先级值

    优先级值越大,优先级越高
    淡红背景的是EC6或更高版本的功能
    优先值 运算符 描述 例子
    20 ( ) 表达式分组 (3 + 4)
     
    19 . 成员属性 person.name
    19 [] 数组成员 person["name"]
    19 () 函数调用 myFunction()
    19 new 创建实例 new Date()
     
    17 ++ 后缀递增 i++
    17 -- 后缀递减 i--
     
    16 ++ 前缀递增 ++i
    16 -- 前缀递减 --i
    16 ! 逻辑非 !(x==y)
    16 typeof 类型 typeof x
     
    15 ** 次幂 (ES7) 10 ** 2
     
    14 * 乘法 10 * 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
    11 in 属性属于对象 "PI" in Math
    11 instanceof 对象实例 instanceof Array
     
    10 == 相等 x == y
    10 === 严格相等(值和类型都等) x === y
    10 != 不等 x != y
    10 !== 严格不等(值和类型都不等) x !== y
     
    9 & 按位与 x & y
    8 ^ 按位异或 x ^ y
    7 | 按位或 x | y
    6 && 逻辑与 x && y
    5 || 逻辑或 x || y
    4 ? : 条件三元 "Yes" ? "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
     
    2 yield 暂停函数 yield x
    1 , 逗号 5 , 6