为什么过滤器变量不会成倍增加?这个循环是否相关?

时间:2018-01-25 05:54:25

标签: javascript node.js function

我必须创建一个函数power。这就是一个基础和一个exp参数。根据num exp equals,我必须自己乘以基数。这是我的代码。

    function power(base, exp) {
      var nums = [];
      var filter = 1;

      for(var i = 0; i < exp; i++) {
        nums.push(base);
      }
        for(var j = 0; j < nums.length; j++) {
        var ele = nums[j];
        filter * ele;
        }
       return filter;
     }

    power(5,6)

2 个答案:

答案 0 :(得分:0)

您必须在每个步骤中更新filter的值,如下所示:

filter = filter * ele;

或更紧凑:

filter *= ele;

顺便说一下,您不需要使用数组nums。检查下面的代码片段,我在开头添加了一些验证逻辑,然后我们只有一个for语句。

function power(base, exp) {
    if(isNaN(base) || isNaN(exp)) {
        throw "Both base and exp should be numbers.";
    }
    if(base===0 && exp!==0){
        return Infinity;
    }
    if(exp<0){ 
        return 1/power(base, -exp);
    }
    if(exp===0){
        return 1;
    }

    var power = 1;
    for(var i=0; i<exp; i++){
        power = power * base;
    }

    return power;
}

答案 1 :(得分:0)

以下是您的功能的简化版本:

function power(base, exp) {
    return Math.pow(base, exp);
}

power(5,6);

甚至更简单,只需致电Math.pow

Math.pow(5, 6);