Цикл умножения не умножается - PullRequest
0 голосов
/ 06 ноября 2018

Попытка зациклить введенные аргументы и вернуть аргументы как общее умножение:

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 голосов
/ 06 ноября 2018

У вас есть две проблемы, одна из которых заключается в том, что вы не можете переназначить значение константе. Во-вторых, вы устанавливаете всего = 0 в первую очередь. Делая это, вы будете умножать все на 0.

Таким образом, чтобы решить вашу проблему, вам нужно условное условие, чтобы проверить, если итоговое значение равно 0, если 0, вы присваиваете общее свойство свойству аргументу в цикле, если не умножаете его.

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));
0 голосов
/ 06 ноября 2018

Как указано в комментариях, в коде присутствует более одной ошибки: сначала вы присваиваете переменные как const, что в данном случае неверно, практическое правило заключается в использовании 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)

Обратите внимание, как я использую const для переменной lightCode, потому что этот объект никогда не переназначается (то есть вы не будете использовать = для повторного присвоения нового значения), и вместо этого я использую let. , потому что переназначается при каждом взаимодействии цикла.

0 голосов
/ 06 ноября 2018

Я рекомендую вам прочитать о const, let, var и когда их использовать. В вашем коде (как минимум) две ошибки:

  1. const total = 0 => поскольку итоговое значение объявляется с использованием идентификатора const, это означает, что его значение будет постоянным во время вашей программы. А что значит константа? То, что это остается тем же самым. Но строка 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...