@getify на JavaScript
@getify рассказал о JavaScript на MakerSquare 9 апреля 2015 года, и это мои заметки.
«Функциональный свет программирования»
Функциональное программирование без запутанной терминологии. По сути, это функции более высокого порядка в качестве оберток для других функций.
Карта, уменьшение и фильтр — три основных инструмента, и у них есть типы проблем, для решения которых они подходят.
карта
Начните со списка и закончите списком того же размера, но с разными значениями.
// example [1, 2, 3].map(function(v){return v * 2;}); // => [2, 4, 6]
Уменьшать
Начните со списка и закончите одним значением. Он хочет, чтобы вы взяли два элемента и либо выбросили один, либо скомпоновали их вместе.
Фильтр
Начните со списка и пропустите его через функцию фильтра, чтобы получить меньший список.
// example [1, 2, 3, 4, 5, 6, 7].filter(function(v){ return v%2 === 1; }); // => [1,3,5,7]
ES6
Цель ES6 — помочь разработчикам писать более понятный и удобный для сопровождения код. Речь идет о том, чтобы сделать код более полезным, а не более умным. Это позволяет нам делать то же самое, но лучше и понятнее.
Исходный код не имеет значения для компьютеров. Это важно для разработчиков. Компьютерам все равно, как они получают свои единицы и нули, но чистый исходный код может иметь огромное значение для разработчиков.
Деструктуризация
Это тема в ES6. Это в основном о том, чтобы сделать назначение переменных более простым и понятным. Примеры записать не успел, но вот некоторые примеры.
"..." is used for gathering and spreading
Узнайте больше о ES6 в бесплатной электронной книге, которая находится в стадии разработки:
Обещания
Важнее понять концепцию, чем синтаксис.
В JavaScript вы начинаете транзакцию, но у вас еще нет результата.
Обещание — это независимая от времени оболочка будущего значения. Промисы предназначены для обеспечения механизма доверия. Промисы — это не избавление от обратных вызовов, а скорее управление обратными вызовами. Обещания помогают вам не беспокоиться о компоненте времени.
Генераторы
Они позволяют вам писать код, который кажется синхронным, но на самом деле остается асинхронным, потому что они позволяют вам использовать функции, которые могут приостанавливаться и продолжаться (эти функции называются генераторами).
Генераторы абстрагируют асинхронный код, и тогда вы можете написать код, который выглядит синхронным. Любой асинхронный код, кроме кода, основанного на событиях, можно реорганизовать для использования генераторов.
Вам нужен транспилятор для обработки синтаксиса генератора. У него есть библиотека, есть и другие. Вот пояснение от @getify:
Вам нужен транспилятор, чтобы генераторы работали в старых браузерах. Они отлично работают в текущем Chrome/FF, а также в iojs (и узле с флагом).
Часть о библиотеке заключается в том, что вам нужен какой-то «раннер», который может запускать ваш генератор, получать полученные промисы и использовать их для возобновления работы генератора со значениями выполнения.