fetchData
, которая возвращает обещание (Promise) с задержкой. Затем мы используем методы .then()
для обработки успешного выполнения и .catch()
для обработки ошибок. Это позволяет более чисто и структурированно работать с асинхронными операциями, такими как загрузка данных с сервера.products
, содержащий информацию о различных продуктах. Затем мы используем метод sort()
для сортировки этого массива по полю price
в порядке возрастания, используя функцию sortByPriceAscending
в качестве функции сравнения. Вы можете создать аналогичные функции для сортировки в порядке убывания или для сортировки по другим полям объектов.localStorage
позволяет хранить данные на стороне клиента (в браузере). Методы setItem()
используются для записи данных, getItem()
для чтения данных и removeItem()
для удаления данных из локального хранилища.factorial
, которая вычисляет факториал числа n
. Она вызывает себя с аргументом n - 1
, пока n
не станет меньше или равно 1.factorialMemoized
, которая использует мемоизацию. Мемоизация - это техника, при которой результаты предыдущих вызовов функции сохраняются в памяти и возвращаются в случае повторного вызова с теми же аргументами. В данном случае, мы используем объект memo
для хранения результатов предыдущих вызовов factorialMemoized
. Если результат уже вычислен для конкретного n
, мы возвращаем его из memo
, иначе вычисляем и сохраняем в memo
.factorialMemoized
более эффективна при вычислении факториала для больших чисел, так как избегает переполнения стека вызовов, и вычисляет результаты только один раз для каждого n
.new Intl.NumberFormat()
. Мы указываем язык и регион (в данном случае 'en-US' для английского языка в США) и опции форматирования (в данном случае стиль 'currency' и валюту 'USD').format()
объекта Intl для форматирования числа amount
в соответствии с указанными опциями. В данном примере мы форматируем число в денежный формат.getContext()
. Затем мы используем методы контекста, такие как fillRect()
для рисования прямоугольника, stroke()
для рисования линии и fillText()
для рисования текста.fillStyle
), цвет обводки (strokeStyle
), толщина линии (lineWidth
) и шрифт (font
).div
с текстом "Новый элемент" и классом "my-class". Затем мы добавляем этот элемент в конец body
документа с помощью метода appendChild()
. Мы также изменяем содержимое элемента с помощью свойства textContent
и стилизуем его, устанавливая значение свойства backgroundColor
.remove()
. Это демонстрирует возможность удаления элементов из документа.