指数运算符(**)的 ES5 解释

90 阅读1分钟

指数运算符(Exponentiation operator) ** 是 ES2016 引入的一个运算符,用于指数运算。

有两种使用场景:x ** yx **= y(等价于 x = x ** y)。

将代码 转译成 ES5 后,得:

// x ** y 的ES5 实现
Math.pow(x, y);

// x **= y 的 ES5 实现
x = Math.pow(x, y);

我们来分析其实现。

ES2016 之前,已经提供了 Math.pow() 方法实现指数运算,因此功能上 ** 等价于 Math.pow(),也就可以使用后者来替代前者了。

之所以引入这个运算符,基于两点考虑

  • 常用运算:指数运算常用于数学、物理和机器人技术领域;
  • 语法简洁:** 的写法比函数表示法更简洁,也更受欢迎(Python、Ruby 等语言均采用了这种写法)。