Страницы

Поиск по вопросам

понедельник, 23 декабря 2019 г.

Значение по умолчанию для аргумента функции javascript

#javascript #функции


Имеется функция, суммирующая все переданные ей аргументы. Все прекрасно работает,
но при передаче значения по умолчанию для одного из аргументов, функция не видит это
значение и считает без него. Помогите разобраться с этим



function sumWithDefaults(a, b = 100) {
  let result = 0;
  for (let i = 0; i < arguments.length; i++) {
    result += arguments[i]
  }
  return result
}

console.log(sumWithDefaults(10));  // выведет 10 вместо 110



    


Ответы

Ответ 1



Вы задали значение по умолчанию не для arguments[1], а именно для переменной b. Увы, вещи это далеко не равнозначные. Так что поправить Ваш код следует таким образом: function sumWithDefaults(a, b = 100) { let result = a + b; for (let i = 2; i < arguments.length; i++) { result += arguments[i]; } return result; } console.log(sumWithDefaults(10)); // выведет 110 console.log(sumWithDefaults(10, 50)); // выведет 60 console.log(sumWithDefaults(10, 50, 30)); // выведет 90 Советую прочитать справку по параметрам по умолчанию от Mozilla, а также по объекту arguments. Помимо всего прочего там говорится, что Объект arguments — это подобный массиву объект, который содержит аргументы, переданные в функцию. То есть в arguments будут храниться только и только те аргументы, которые Вы явно туда передали! Никаких параметров по умолчанию внутри не содержится Надеюсь, мой ответ помог решить Вам поставленную задачу, а также разобраться в вопросе! Удачи в Ваших начинаниях!

Ответ 2



в arguments хранятся фактически переданные параметры. Так как функция вызывается с одним параметров, в данной коллекции будет всего один элемент.

Комментариев нет:

Отправить комментарий