电源功能。为什么在循环开始时设置result = 1?

时间:2014-09-23 19:11:09

标签: javascript function

我在下面发布的代码没有问题它工作正常但我只是希望有人可以向我解释为什么var result = 1

我现在理解的方式是"结果* =基数"与"结果=结果*基数相同。"在这种情况下,功率也不仅仅是插入到指数参数中的数字吗? 1 * 10 = 10等...提前致谢!

var power = function(base, exponent) {
  var result = 1;     // <--- Why this???
  for (var count = 0; count < exponent; count++)
    result *= base;
  return result;
};

console.log(power(2, 10));

3 个答案:

答案 0 :(得分:2)

因为结果需要是一个带有值的数字才能用另一个数字加倍。 NaN * base === NaN0 * base === 0

尝试删除它,看看会发生什么:

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

console.log(power(2, 10));    // output: NaN
  

我现在理解的方式是&#34;结果* =基数&#34;与&#34;结果=结果*基数相同。&#34;在这种情况下,功率也不仅仅是插入到指数参数中的数字吗? 1 * 10 = 10等...

您的result *= base处于循环中。因此,每次执行循环时,都会使用新值更新result变量。所以第一次通过循环你有:

result = 1 * 10

下次你有:

result = 10 * 10

接下来:

result = 100 * 10

等等......

如果你在循环中移动了var result = 1部分,那么你的函数就会被破坏,因为每次迭代都会重置result

答案 1 :(得分:1)

结果被初始化为基于功率零,恰好是1。

然后将指数乘以base,得到base ^ exponent。

所以2 ^ 10 = 1 * 2 * 2 * 2 * 2 .. 10次。

答案 2 :(得分:1)

您有两种解决问题的方法,

要么从1开始并将基数与自身相乘n次(如示例所示),要么从基数开始,然后乘以n-1次:

var result = base;
for (var count = 0; count < exponent - 1; count++)
  result *= base; 
//this will return wrong result if you call power(2, 0)

第一种情况显然更好,因为基数可以是0。

问题的最短答案是因为base ^ 0 = 1