跳到主要内容

JS 运算符

JavaScript 运算符介绍​

  • 算术运算符

    • + 加
    • - 减
    • * 乘
    • / 除
    • % 取余
    • ** 幂运算
    • ++ 自增
    • -- 自减
  • 赋值运算符

    • = 赋值
    • += 加后赋值
    • -= 减后赋值
    • *= 乘后赋值
    • /= 除后赋值
    • %= 取余后赋值
  • 比较运算符

    • == 等于(自动类型转换)
    • === 全等(值和类型都相等)
    • != 不等
    • !== 全不等
    • > 大于
    • < 小于
    • >= 大于等于
    • <= 小于等于
  • 逻辑运算符

    • && 与
    • || 或
    • ! 非
  • 位运算符(较少用)

    • & 按位与
    • | 按位或
    • ^ 按位异或
    • ~ 按位取反
    • << 左移
    • >> 右移
    • >>> 无符号右移
  • 三元运算符

    js
    let result = condition ? value1 : value2;
  • 其他常见运算符

    • typeof 判断数据类型
    • instanceof 判断是否属于某个对象类型
    • delete 删除对象属性
    • in 判断属性是否存在
    • ... 展开运算符

JavaScript 运算符优先级​

tip

括号成员先,单目幂次连;乘除加减移,关系相等判;按位逻辑推,条件赋值随,逗号最后算。


设计逻辑​

  1. 先算“局部”、再算“全局”
    • 成员访问、函数调用 → 最小的“单位”要先确定。
    • 所以 obj.method()[i] 要在加减乘除之前算清楚。
  2. 单目运算比双目运算更紧密
    • !a 、 ++a 、 typeof a 这些只作用在一个操作数上的运算,优先级比 a + b 、 a * b 更高。
  3. 幂运算特殊
    • a ** b ** c 采用右结合,与数学里常见的幂运算习惯(幂塔运算)一致。
    • 区别: 2 ** 3 ** 2 右结合等价于 232=29=5122^{3^2}=2^9=512 ;左结合则等价于 (23)2=64(2^3)^2=64 。
  4. 乘除优先于加减
    • 这是数学规则,编程语言普遍遵守。
  5. 位运算在逻辑之前
    • 先算二进制层面的与或非,再到布尔逻辑层面的与或非。
    • 所以顺序是: & → ^ → | → && → || 。
  6. 空值合并(??)比逻辑或更靠后
    • 避免和“假值判定”混淆,必须明确写括号。
    • 例如: a || b ?? c 在 JS 中会报错,必须写成 (a || b) ?? c 。
  7. 条件(三元)和赋值靠后
    • 它们是“控制流”或者“结果决定”,自然放在最后。
    • a = cond ? b : c → 先算条件,再赋值。
  8. 逗号运算符最低
    • 它只是“顺序执行”,优先级最低,几乎任何地方都得加括号。

规则表​

从高到低,数值越小优先级越低

优先级运算符/描述示例
20成员访问、函数调用、new(带参数)obj.prop、func()、new Person(1,2)
19new(无参数)new Person
18后置递增/递减x++、x--
17逻辑非、按位非、一元加/减、前置递增/递减、typeof、void、delete、await!a、~a、+a、-a、++x、typeof x
16指数运算符(右结合)a ** b
15乘、除、取余*、/、%
14加、减+、-
13位移<<、>>、>>>
12关系运算符<、<=、>、>=、in、instanceof
11相等运算符==、!=、===、!==
10按位与&
9按位异或^
8按位或|
7逻辑与&&
6逻辑或|
5空值合并??
4条件(三元)cond ? a : b
3赋值运算符(右结合)=、+=、-=、*=、/=、%=、**=、<<=、>>=、>>>=、&=、^=、|=、&&=、|=、??=
2yield、yield*yield x
1展开运算符、逗号运算符...args、a, b
拓展
  • 算术、比较、逻辑、位运算符 → 直接映射到 CPU 指令,非常快。
  • 对象/类型相关运算符(typeof、instanceof、delete)→ 运行时逻辑,依赖 JS 引擎实现。
  • 高级异步运算符(await、yield)→ 不是 CPU 层面的,而是运行时调度(事件循环 / 协程机制)。