-1
var power = function (base, exponent) {
  var result = 1;
  for ( i = 0; i < exponent; i++) {
    result = result * base;
  }
  return result;
};

power(2, 2);

我实际上得到了一些,但我没有得到的是——for循环在那里和后面的行做了什么?(函数的力量)

4

3 回答 3

4

循环从0(inclusive) 循环到exponent(exclusive) 乘以result并将base结果存储在result. 一旦它循环了很多次,它就会返回结果。所以它将数字提高到给定的幂(参见指数)。


旁注:此代码成为隐式全局恐怖的牺牲品,因为它未能声明i变量。

于 2012-04-17T12:54:21.450 回答
2

将一个数提高到一定的幂等于将该数乘以自身多次。所以 2 的 2 次方与 2 * 2 相同,2 的 3 次方与 2 * 2 * 2 相同,等等。for循环只是实现了这一点。

于 2012-04-17T12:53:54.910 回答
2

该函数实际上通过将基数乘以自身多次以直接的方式计算幂函数。

该循环实际上将中间结果与到达运行中的基数相乘。从而计算result = (((1 * base) * base) * base) * ...得到最终结果。

顺便说一句,为此有一个内置函数:(Math.pow有关详细信息,请参阅 MDN

于 2012-04-17T12:54:34.097 回答