JavaScript 中的指数(幂)运算

exponentiation-in-javascript

我总是发现有一点不便在使用旧的方式进行指数运算。幸运的是,新的指数运算方式已引用。其语法也与其他语言(如 Ruby,Python)一样简明。值得点赞 👍

// Old way
const old = Math.pow(3, 7);

// 2187
// ✅ ES7 way
const es7 = 3 ** 7;
// 2187

#中缀表示法(Infix notation)

使用 ** 称为中缀表示法。其是指放在在操作数之间的运算符。其他的中缀运算符包括:+ 或者 -

es7 引入这个语法的原因是:

** 相比函数而言更加简单明了,使其更为可取

#其他语言中的指数运算

也许,你已注意到在其他语言中的这一语法是很简洁的:

// Python
a ** b;

// Ruby
a ** b;

// Perl
a ** b;

// F#
a ** b;

我很喜欢它与其他语言相似的语法。因为这样使得 JavaScript 更容易学习,而且可以更快的开始运行起来。

#赋值运算

您应该已经看到过算术运算符与赋值运算符相结合。例如+=:

a += b;

// Same as
// a = a + b

相似的,指数运算符也可以这样做,**=:

a **= b;

// Same as
// a = a ** b

#负基数

有意容易犯的错误是,当指数运算的基数是负数时,你应当使用小括号将其包起来。

// ❌ 语法错误
const wrong = -3 ** 7;

// ✅
const correct = (-3) ** 7;

然而,这种错误不存在于指数函数(Math.pow)的使用。

const works = Math.pow(-3, 7); // 正确的

#相关引用