乘法循环不相乘

时间:2018-11-06 13:06:16

标签: javascript loops

尝试循环输入的参数并以总乘法返回参数:

let lightCode = { //Creates Object.

Multiply: function() { //Multiplys all arguements.

    const total = 0;

    for(const i = 0; i < arguments.length; i++) {

        console.log(arguments[i]);

        total *= arguments[i];

    }

    return total;

}
}
    lightCode.Multiply(12, 16)

3 个答案:

答案 0 :(得分:0)

我建议您阅读有关const, let, var的信息以及何时使用它们。您的代码中至少有两个错误:

  1. const total = 0 =>因为使用const标识符声明了total,这意味着它的值在程序中将保持不变。常数是什么意思?它保持不变。但是行total *= arguments[i];要更改它,从而导致错误。另外,将总数初始化为0会使最终结果为0(请记住,乘法身份元素为1)。

  2. const i = 0 =>同样的事情; i++希望增加i的值,但您将其声明为const。

运行代码并打开控制台,您可以清楚地看到一条错误消息:"Uncaught TypeError: Assignment to constant variable."

干杯!

let lightCode = {
    Multiply: function() { 

        var total = 1;

        for (var i = 0; i < arguments.length; i++) {
            console.log(arguments[i]);
            total *= arguments[i];
        }

        return total;

    }
}

lightCode.Multiply(12, 16)

答案 1 :(得分:0)

您有两个问题,其中之一是您无法将值重新分配给常量。其次,您首先要设置total = 0。这样,您将所有内容都乘以0。

因此,为了解决您的问题,您需要一个if条件来检查total是否为0,如果为0,则将属性total分配给循环中的参数,否则将其相乘。

let lightCode = { //Creates Object.

    Multiply: function() { //Multiplys all arguements.

       let total = 0;
       for(let i = 0; i < arguments.length; i++) {
          if(total === 0) total = parseFloat(arguments[i]);
          else total *= parseFloat(arguments[i]);

       }

      return total;

   }
}
console.log(lightCode.Multiply(12, 16));

答案 2 :(得分:0)

正如注释中指出的那样,代码中存在多个错误,首先您将变量分配为const,这在这种情况下是不正确的,经验法则是在每次需要重新分配a时使用let变量(意味着,当您需要再次使用=符号时),否则使用const。同样,正如注释中指出的那样,您不应将变量初始化为零,否则循环将始终返回零。

这是一个有效的代码段:

const lightCode = { //Creates Object.
    Multiply: function() { //Multiplys all arguements.
        let total = 1; // can not be zero, otherwise the loop will always return zero

        for(let i = 0; i < arguments.length; i++) {
            console.log(arguments[i]);
            total *= arguments[i];
        }

       return total;

    }
}

lightCode.Multiply(12, 16)

请注意我如何为lightCode变量使用const,因为从未重新分配此对象(这意味着您将不再使用=来重新分配新值),而总的来说,我正在使用{ {1}},因为在每次循环交互时都会重新分配。