如何在JavaScript中获取运算符优先级的数值?
运算符优先级判断函数实现
你完全可以自己实现一个传入运算符返回优先级数值的函数,比你现在的条件判断方式更易维护,后续扩展新运算符(比如取幂^、取模%)也更方便。
问题分析
你当前的代码存在两个小问题:
- 语法错误:
item = "/"是赋值操作,应该改为item == "/"(用严格相等===更严谨) - 扩展性差:如果要新增运算符,得不断叠加条件分支,代码会越来越臃肿
实现方案
方案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
相关产品推荐
相关产品推荐

