You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中获取运算符优先级的数值?

运算符优先级判断函数实现

你完全可以自己实现一个传入运算符返回优先级数值的函数,比你现在的条件判断方式更易维护,后续扩展新运算符(比如取幂^、取模%)也更方便。

问题分析

你当前的代码存在两个小问题:

  1. 语法错误:item = "/"是赋值操作,应该改为item == "/"(用严格相等===更严谨)
  2. 扩展性差:如果要新增运算符,得不断叠加条件分支,代码会越来越臃肿

实现方案

方案1:对象映射(推荐)

这种方式查找效率高,代码最简洁:

function getPrecedence(operator) {
  const precedenceMap = {
    '+': 1,
    '-': 1,
    '*': 2,
    '/': 2,
    '^': 3 // 新增取幂运算符,直接添加键值对即可
  };
  // 未知运算符返回0,也可根据需求抛出错误
  return precedenceMap[operator] || 0;
}

用这个函数判断优先级高低就很直观:

const currentPrecedence = getPrecedence(item);
const comparePrecedence = getPrecedence(compare);
const greaterPrecedence = currentPrecedence > comparePrecedence;

方案2:switch语句

如果需要处理更复杂的优先级逻辑(比如不同场景下的优先级差异),可以用switch:

function getPrecedence(operator) {
  switch(operator) {
    case '+':
    case '-':
      return 1;
    case '*':
    case '/':
      return 2;
    case '^':
      return 3;
    default:
      return 0; // 或者执行 throw new Error('未知运算符');
  }
}

方案优势

  • 逻辑清晰,代码可读性更强
  • 新增运算符只需修改映射表或switch分支,无需改动核心判断逻辑
  • 可统一处理未知运算符的情况,避免潜在bug

内容的提问来源于stack exchange,提问作者CJ Luz Roque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:43:17