#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 хранятся фактически переданные параметры. Так как функция вызывается с одним параметров, в данной коллекции будет всего один элемент.
Комментариев нет:
Отправить комментарий