Я закончила курс основ JavaScript, разработанный Флавио Копес. Я получал электронные письма от Флавио, а затем отвечал на них публично, размещая ответы на Medium. По окончании курса я бы сказал, что это была лучшая практика, которую я когда-либо имел.

Какое требование мы должны иметь для использования ключевого слова await в функции?

Мы должны определить функцию как АСИНХРОННУЮ. Это можно сделать с помощью ключевого слова async:

Вы можете объяснить мне, как работает вызов асинхронной функции?

Асинхронная функция должна возвращать обещание. Он определяет последующее поведение: когда мы вызываем такую ​​функцию, вызывающий код останавливается до тех пор, пока возвращенное обещание не будет разрешено или отклонено.

Что такое функция высшего порядка?

В JS функции высшего порядка - это те функции, которые могут принимать другие функции в качестве аргументов и возвращать другие функции.

Что мы подразумеваем под декларативным программированием?

Декларативное программирование означает создание кода на более абстрактном уровне без конкретных низкоуровневых инструкций для интерпретатора. Такие функции, как map (), filter () и reduce (), являются хорошими примерами этого подхода: объявляют, что мы хотим сделать, но не требуют описания шагов цикла.

Каковы преимущества неизменности?

Неизменяемость предотвращает создание кода неожиданными изменениями данных, которые могут повредить как логику, так и поток. Уверен, что это прежде всего польза.

Что значит первоклассные функции в JavaScript?

Это означает, что функции являются универсальными сущностями в JS: мы можем назначать их переменным, они могут быть переданы в качестве аргументов другим функциям, а также могут быть возвращены другими функциями.

Вы можете объяснить мне концепцию композиции?

Композиция - это способ заставить несколько функций тесно взаимодействовать друг с другом. Один из способов композиции называется «цепочка», и я считаю, что это хорошее слово для объяснения всей концепции. Как и в UNIX-подобных ОС, где у нас есть конвейер для передачи результата одной команды на ввод следующей команды, композиция позволяет нам немедленно передавать возвращаемые значения функций следующим функциям.

Опишите, для чего нужен filter ()

Очевидно, что метод filter () хорош для фильтрации :) Это лучший метод в случае, если нам нужно избавиться от некоторых значений выбранных значений, которые выше / ниже указанного порога.

Опишите мне, для чего полезна функция map ()

Map () выполняет итерацию по массиву, чтобы выполнить те же действия с каждым элементом в нем. Это может пригодиться, если мы хотим преобразовать каждое значение во что-то новое, например, мы можем преобразовать массив температур по Фаренгейту в градусы Цельсия. Я использовал слова «преобразовать» и «преобразовать массив», но, строго говоря, map () не изменяет массив, а создает новый.

Опишите, для чего полезен reduce ()

Этот метод «сворачивает» все элементы массива, используя заданную логику (функция обратного вызова). Полезно вычислять сумму элементов массива, создавать хитрые счетчики и т. Д.

Напишите код, необходимый для запуска функции `run ()` для массива имен собак, используя map (). Эта функция должна вывести на консоль «‹dogname› is running!»

Используйте reduce (), чтобы создать строку с именами собак, содержащихся в массиве [‘togo’, ‘lessie’, ‘hachiko’, ‘balto’], разделяя их запятыми до тех пор, пока не будет найдена последняя из них. Мне нужна эта строка: «togo, lessie, hackiko, balto».