工具用的顺手吗?
你的反馈能帮助我们做得更好
快速查看JavaScript运算符优先级与结合性,避免运算逻辑错误
数字越小优先级越高;此表是常见语法分组参考。?? 与 || 同级,但不能不加括号与 ||/&& 混用;优先级不能代替 ECMAScript 的语法限制。 参考来源
( )分组表达式无结合性用括号显式改变表达式求值顺序,括号内先计算。
(a + b) * c.成员与调用左结合访问对象的命名属性。
user.name[]成员与调用左结合用表达式结果作为属性名或数组索引。
items[index]?.成员与调用左结合对象为空值时短路返回 undefined,避免继续访问时报错。
user.profile?.email()成员与调用左结合调用函数、方法或可调用表达式。
format(value)new ...()成员与调用左结合创建构造函数实例,并传入参数列表。
new Date(2026, 0, 1)new对象创建右结合创建构造函数实例;省略调用括号时优先级低于成员访问和函数调用。
new Datex++后置运算无结合性返回变量当前值,然后将变量加 1。
count++x--后置运算无结合性返回变量当前值,然后将变量减 1。
count--++x一元运算右结合先将变量加 1,再返回新值。
++count--x一元运算右结合先将变量减 1,再返回新值。
--count!一元运算右结合将值转换为布尔值后取反。
!isReady~一元运算右结合将操作数转为 32 位整数后逐位取反。
~mask+x一元运算右结合尝试将操作数转换为数字。
+inputValue-x一元运算右结合将操作数转换为数字后取相反数。
-pricetypeof一元运算右结合返回操作数类型的字符串描述。
typeof valuevoid一元运算右结合计算表达式并返回 undefined。
void fn()delete一元运算右结合删除对象上的可配置属性。
delete user.tempawait一元运算右结合在 async 函数或模块顶层等待 Promise 结果。
await fetchData()**幂运算右结合计算左操作数的右操作数次幂;左侧不能直接是一元表达式。
2 ** 3 ** 2*乘除取余左结合两个数值相乘。
width * height/乘除取余左结合左操作数除以右操作数。
total / count%乘除取余左结合返回除法后的余数。
index % 2+加减连接左结合数值相加;任一操作数为字符串时通常执行字符串连接。
firstName + lastName-加减连接左结合两个数值相减。
end - start<<位移运算左结合将 32 位整数按位左移。
1 << bit>>位移运算左结合保留符号位进行右移。
value >> 1>>>位移运算左结合高位补 0 进行右移。
value >>> 1<关系判断左结合比较左操作数是否小于右操作数。
age < 18<=关系判断左结合比较左操作数是否小于或等于右操作数。
score <= 100>关系判断左结合比较左操作数是否大于右操作数。
price > limit>=关系判断左结合比较左操作数是否大于或等于右操作数。
count >= minin关系判断左结合判断指定属性名是否存在于对象或其原型链中。
"name" in userinstanceof关系判断左结合判断对象是否出现在构造函数的原型链上。
value instanceof Date==相等判断左结合允许类型转换后比较两个值是否相等。
value == null!=相等判断左结合允许类型转换后比较两个值是否不相等。
value != 0===相等判断左结合不进行类型转换,比较类型和值是否都相同。
status === "ok"!==相等判断左结合不进行类型转换,判断类型或值是否不同。
status !== "ok"&按位运算左结合两个 32 位整数逐位执行与运算。
flags & enabled^按位运算左结合两个 32 位整数逐位执行异或运算。
flags ^ mask|按位运算左结合两个 32 位整数逐位执行或运算。
flags | selected&&逻辑运算左结合左侧为假值时短路返回左侧,否则返回右侧。
user && user.name||逻辑运算左结合左侧为真值时短路返回左侧,否则返回右侧。
name || "匿名"??空值合并左结合左侧为 null 或 undefined 时返回右侧;与 &&、|| 混用时需要加括号。
count ?? 0?:条件运算右结合根据条件表达式结果在两个分支表达式中选择一个。
score >= 60 ? "通过" : "未通过"=赋值与函数右结合将右侧表达式结果赋给左侧引用。
total = 0+=赋值与函数右结合等价于把当前值与右侧值相加后再赋回。
total += price-=赋值与函数右结合等价于把当前值减去右侧值后再赋回。
count -= 1*=赋值与函数右结合等价于把当前值乘以右侧值后再赋回。
size *= 2/=赋值与函数右结合等价于把当前值除以右侧值后再赋回。
size /= 2%=赋值与函数右结合等价于把当前值取余后再赋回。
index %= length**=赋值与函数右结合等价于对当前值执行幂运算后再赋回。
value **= 2<<=赋值与函数右结合等价于左移后再赋回。
mask <<= 1>>=赋值与函数右结合等价于有符号右移后再赋回。
mask >>= 1>>>=赋值与函数右结合等价于无符号右移后再赋回。
mask >>>= 1&=赋值与函数右结合等价于按位与后再赋回。
flags &= mask^=赋值与函数右结合等价于按位异或后再赋回。
flags ^= mask|=赋值与函数右结合等价于按位或后再赋回。
flags |= mask&&=赋值与函数右结合左侧为真值时,才将右侧结果赋给左侧。
enabled &&= isAdmin||=赋值与函数右结合左侧为假值时,才将右侧结果赋给左侧。
title ||= "未命名"??=赋值与函数右结合左侧为 null 或 undefined 时,才将右侧结果赋给左侧。
options.timeout ??= 3000=>赋值与函数右结合定义箭头函数表达式。
(x) => x * 2yield赋值与函数右结合在生成器函数中暂停执行并产出一个值。
yield valueyield*赋值与函数右结合把产出过程委托给另一个可迭代对象。
yield* list,逗号运算左结合从左到右依次求值,整个表达式结果为最后一个表达式。
(x += 1, x * 2)概览
了解工具能解决的问题、计算或处理逻辑,以及数据边界。
这个查询器会从一份 JavaScript 运算符目录中筛选匹配项,并展示符号、名称、类别、结合性、简要说明和示例。它适合快速定位 ===、??、typeof 等条目;结果不是对输入表达式进行解析或运行,也不会给出完整表达式的计算值。
优先级用于判断不同运算符组合时的隐式分组;结合性用于处理同一优先级连续出现的运算符。例如,乘法先于加法,因此 a + b * c 按 a + (b * c) 分组。赋值通常向右结合,a = b = 5 按 a = (b = 5) 分组。阅读查询结果时,不要把结合性误当作优先级,也不要把目录中的数字当成表达式计算结果。
指南
按步骤完成操作,并通过示例核对输入与结果。
可输入运算符符号、名称、说明、示例中的文本,或目录显示的 level 数字。查询会即时筛选匹配条目;输入部分关键词也可以。
按乘除、关系判断、赋值、逻辑等类别筛选。若只记得运算符如何结合,可再选左结合、右结合或无结合性。
逐条查看名称、说明和代码示例;结果按目录 level 分组,并显示匹配条目数量。使用示例前,先确认代码上下文与自己的表达式相符。
条目提供分别复制符号和示例的操作。复制后可以在自己的编辑器或测试环境中继续验证;需要判断完整语法时,按须知中的官方参考资料复核。
关键词与类别、结合性筛选可以同时使用:例如先选“赋值”,再选“右结合”,列表会保留同时符合两项条件的条目。若没有匹配结果,可先清空关键词,再检查是否把类别或结合性限制得过窄。结果是便于浏览的目录,找到条目后仍要回到表达式本身检查括号、操作数类型与短路条件。
场景
查看这项工具在不同工作与生活流程中的用法。
遇到多个符号连写时,先分别查询相关运算符,确认哪些类别参与组合,再用括号把自己的理解写出来。这样能把“优先级判断”和“程序实际结果”分开检查。
需要向同事或学生说明一段条件表达式时,可复制符号和目录示例作为讨论起点,再把真实变量和边界条件放入运行测试。
如果表达式虽能依照优先级解析、但不容易一眼读懂,可在代码中补充括号。括号有助于表达意图,也方便团队评审。
问答
集中解答高频疑问与容易混淆的问题。
不会。输入框用于筛选运算符目录,不会执行代码或解析完整表达式。需要计算运行结果时,应在合适的 JavaScript 环境中测试。
它们说明相同优先级的运算符如何分组。左结合的 a - b + c 按 (a - b) + c 理解;右结合的 a = b = 5 按 a = (b = 5) 理解。优先级不同则先按优先级分组。
本查询器用较小的本地 level 表示靠前的高优先级条目;MDN 的汇总表则从 19(最高)排到 1(最低)。两边数字不能直接对照,应比较运算符所在层级和结合性。
不应这样理解。目录适合快速查找;组合规则和边界语法以当前语言参考资料为准,尤其要复核逻辑或、空值合并、条件和赋值的层级。
须知
使用前了解适用范围、结果限制与必要提醒。
目录的 level 是查询器使用的本地编号,不是 ECMAScript 规范中的固定数值。当前目录对少数层级的归类与 MDN 汇总表不一致:例如它将 || 与 ?? 分列为不同 level,并把条件运算符和赋值条目标成同一 level;MDN 将 || 与 ?? 列在同一优先级,并将条件运算符置于赋值之前。涉及这些组合时,请以官方语言资料和实际语法测试为准。
优先级与结合性只描述语法分组,不代表每个操作数的运行顺序、类型转换结果或业务逻辑正确性。使用括号明确意图,并在目标运行环境中验证重要代码。
优先级描述语法怎样分组,不等同于所有操作数的运行先后。含有逻辑与、逻辑或、空值合并或可选链的表达式还可能发生短路;阅读时应区分“哪些部分先结合”与“哪些部分实际会执行”。
推荐
查找相关工具、专题与可用的 API 能力。