•
阅读 2 分钟
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) // 正确的
相关引用
- MDN Web Docs: Math.pow
- MDN Web Docs: Exponentiation **
- w3schools: JS Assignment
- 2ality: Exponentiation Operator
- ExploringJS: Exponentiation operator
- TC39: Exponentiation Operator
- The Exponentiation Operator in JavaScript
- Exponentiation Operator
- 维基百科:中缀表示法(Infix Notation)
文章由 吳文俊 翻译,原文地址 Exponentiation Operator
**
,转载请注明来源。
标签:
#javascript
#es6