Проверка на правильность

239
30 января 2018, 11:53

Привет, мне надо было сделать функцию, которая будет принимать любое кол-во чисел и возвращать их произведение. Если аргументы отсутствуют, возвращать 0. У меня такой код, это правильно?

function multiply(a, b, c) { 
    console.log(a * b * c); 
    return 0; 
} multiply();

Answer 1

Нет, не правильно, так как:

  1. функция всегда возвращает ноль, а должна возвращать ноль только если она была вызвана без аргументов (зато функция что-то выводит в консоль, хотя этого не требовалось...)
  2. если не учитывать пункт (1), то функция работает только когда ей передали три аргумента.
    • Если передать меньшее число аргументов, переменные, отвечающие непереданным аргументам будут иметь значение undefined, что при умножении приведёт к NaN
    • Если передать большее число аргументов, то функция посчитает только произведение первых трёх, а должна была посчитать произведение всех...
  1. Исправить пункт (1) можно убрав вывод в консоль и заменив его возвращением посчитанного произведения
  2. Исправить пункт (2) поможет объект arguments, доступный внутри функции, который является массиво-подобными объектом, содержащим аргументы, переданные в функцию. Связанные с ним вещи:

    • arguments.length — число аргументов переданных в функцию
    • arguments[i]i-ый аргумент (нумерация с нуля)

    Таким образом, можно проверить число переданных аргументов, если их не было, то вернуть ноль, а иначе с помощью цикла посчитать произведение и вернуть его

    (аналогично arguments можно использовать синтаксис оставшихся параметров)

READ ALSO
Вывести Unicode-значения каждого символа строки через пробел

Вывести Unicode-значения каждого символа строки через пробел

Подскажите пожалуйста, как создать функцию, которая принимает строку на вход и возвращает другую строку, состоящую из Unicode-значений символов...

329
Условные операторы: if, '?' [дубликат]

Условные операторы: if, '?' [дубликат]

На данный вопрос уже ответили:

220
Почему именно $scope?

Почему именно $scope?

Начал изучать AngularJsИ пока во всех примерах в callback функции используют $scope в качестве аргумента

232