尝试循环输入的参数并以总乘法返回参数:
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)
答案 0 :(得分:0)
我建议您阅读有关const, let, var的信息以及何时使用它们。您的代码中至少有两个错误:
const total = 0
=>因为使用const
标识符声明了total,这意味着它的值在程序中将保持不变。常数是什么意思?它保持不变。但是行total *= arguments[i];
要更改它,从而导致错误。另外,将总数初始化为0会使最终结果为0(请记住,乘法身份元素为1)。
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}},因为在每次循环交互时都会重新分配。