Имеется функция, суммирующая все переданные ей аргументы. Все прекрасно работает, но при передаче значения по умолчанию для одного из аргументов, функция не видит это значение и считает без него. Помогите разобраться с этим
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 будут храниться только и только те аргументы, которые Вы явно туда передали! Никаких параметров по умолчанию внутри не содержится
Надеюсь, мой ответ помог решить Вам поставленную задачу, а также разобраться в вопросе!
Удачи в Ваших начинаниях!
Комментариев нет:
Отправить комментарий