## JS core ### Типы данных, переменные (`var`, `let`, `const`) операции + логические операции, шаблонизация строк **ES6**. ### Циклы и условия `for (let` , `for .. in`, `for ..of` ### Массивы и объекты `sort`, `map`, `reduce`, `filter`, `Object.keys`, ключи-значения, деструктуризация, **ES6** литералы объектов, `JSON` ### Функции определение, вызов, `arguments`, `call`, `apply`, `rest`, `spread`, `callback` (изнутри и снаружи), анонимные, Function Declaration vs Function Expression, self-invoked. Стрелочные и их особенности, параметры по умолчанию. ### Замыкания, рекурсия замыкания в целом, замыкания на `let` без функции ### Функциональное ООП приватные свойства на замыканиях, что делает new, геттеры, сеттеры. ### this, call, apply, bind потеря this и как с ней бороться в контексте DOM и функционального ООП. ### Try Catch Throw Finally ### Асинхронность Работы тандемом JS и браузера, и способы работы с этим (callback hell, closures, промисы) ### Promise ## Browser APIs ### DOM, BOM Создание, конфигурирование, вставка и удаление элементов, обреботчики событий (два способа навесить обработчик) this в обработчике, объект события, его свойства, целевой элемент, всплытие и его обработка. поведение браузера по умолчанию. `localStorage`. ### AJAX (AJAJ) `XMLHttpRequest` + `Promise` ### Canvas контекст, пути, отрисовка, афинные преобразования системы координат.