JS中求幂运算符是*,左操作数为底数、右为指数,行为基本等价于Math.pow(),优先级高于 /但低于一元运算符,且右结合;-22会报错,需写为(-2)2。

JS 中求幂运算符是 **,用来替代 Math.pow(),语法更简洁、可读性更强。
基本用法:直接替换 Math.pow
** 是中缀运算符,左操作数为底数,右操作数为指数,和 Math.pow(base, exponent) 行为一致(除少数边界情况外):
-
2 ** 3→8(等价于Math.pow(2, 3)) -
5 ** 0→1 -
4 ** 0.5→2(即平方根) -
16 ** (1/4)→2(四次方根)
注意结合性和赋值操作
** 的优先级高于 +、-、*、/,但**低于一元运算符(如 -),且**右结合**:
使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。
-
2 ** 3 ** 2等价于2 ** (3 ** 2)→2 ** 9 = 512(而Math.pow(Math.pow(2,3),2)是 64) -
-2 ** 2会报错(解析为-(2 ** 2)),想表达(-2) ** 2必须加括号 -
let a = 2 ** 3;合法;但let a **= 2;❌ 不支持幂赋值运算符(ES2023 仍未加入)
兼容性与降级建议
** 自 ES2016(ES7)起被标准化,现代浏览器和 Node.js(≥ v12)均支持。若需兼容旧环境(如 IE 或老版 Node):
- 用 Babel +
@babel/preset-env自动转译为Math.pow - 手动替换时注意:两者在特殊值上行为基本一致,但
**对NaN、Infinity、负数底数+分数指数等处理与Math.pow完全相同 - 例外:
0 ** 0和Math.pow(0, 0)都返回1(符合 IEEE 754 规定)
什么时候仍该用 Math.pow?
极少数场景下 Math.pow 更合适:
- 需要显式传入多个参数且逻辑复杂(例如封装工具函数时,参数动态传入)
- 团队规范或代码风格要求统一使用函数调用形式
- 需利用
Math.pow在某些引擎中的微小性能差异(实际已无明显差别)

















