@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 (и узле с флагом).

Часть о библиотеке заключается в том, что вам нужен какой-то «раннер», который может запускать ваш генератор, получать полученные промисы и использовать их для возобновления работы генератора со значениями выполнения.