На данный вопрос уже ответили:
Функция использует деструктурирование для разбора аргументов. Но у нее есть проблема: вылетает ошибка, когда передается опциональный объект без свойства enable. Поскольку все параметры имеют значения по умолчанию, хотелось бы чтобы функция не возвращала ошибку. Существует ли простой способ решить эту проблему?
function go(options) {
let {
speed = 4,
enable: {hyperdrive = false,
frobnifier = true}
} = options;
console.log(
"speed=", speed,
"hyperdrive:", hyperdrive,
"frobnifier:", frobnifier
);
}
go({speed: 5});
2) Типичная ошибка в JavaScript. Мы создаем ряд функций в цикле и ссылаемся на внешнюю переменную из этих функций. Все они будут ссылаться на одну и ту же переменную, которая в конечном итоге будет увеличена до 10. В данном примере callbacks [2] не выводит в консоль 2. Выводится 10, как и во всех функциях в массиве. Какое решение для таких ситуаций в ES5?
var callbacks = [];
for (var i = 0; i < 10; i++) {
callbacks.push(function() { console.log(i) })
}
callbacks[2]();
1) Все по аналогии с присвоением дефолтных значений:
function go(options) {
let {
speed = 4,
enable: {
hyperdrive = false,
frobnifier = true
} = {}
} = options;
console.log(
"speed=", speed,
"hyperdrive:", hyperdrive,
"frobnifier:", frobnifier
);
}
go({speed: 5});
2) Как вариант, передать в контекст i:
var callbacks = [];
for (var i = 0; i < 10; i++) {
(function( index ) {
callbacks.push(function() { console.log(index) })
})(i);
}
callbacks[2]();
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники