Страницы

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

понедельник, 19 ноября 2018 г.

Значение по умолчанию для аргумента функции 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


Ответ

Вы задали значение по умолчанию не для 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 будут храниться только и только те аргументы, которые Вы явно туда передали! Никаких параметров по умолчанию внутри не содержится

Надеюсь, мой ответ помог решить Вам поставленную задачу, а также разобраться в вопросе! Удачи в Ваших начинаниях!

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

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